So you know C++. Now it's time to learn the standard library
Tags: cpp, standardlibrary
Published: 2020-01-13 17:09:09

## Are developers even learning C++ anymore?

With a lot of attention focused on newer object-oriented languages like Python, you might not think C++ is used for much any more.

*Wrong!*

Developed by Bjarne Stroustrup at Bell Labs in 1979, C++ is the foundation for a lot of technology. Windows and Mac OS are at least partially written in C++, and so are many of the desktop apps that run on them. JavaScript runs on an engine written in C++.

Programming languages like Python may be steadily rising in popularity, but C++ is faster than any of them. C++ is very close to the hardware level, making it the best programming language for making hardware run faster.

For big companies like Google and Facebook, just a 10% increase in server performance is a big savings in electricity alone. These companies (no matter what the new, popular object-oriented programming language they use) continue to hire C++ programmers to optimize their back ends, and solve scaling issues.

Yep, knowing C++ could land you a job at Google or Facebook.
___

## Defining the C++ Standard Library

The C++ Standard Library is a reference to help you at every step of your projects related to system programming. Even if you’re proficient in core C++, understanding the Standard Library will make you a valuable programmer. It allows you to:

* Simplify your code. You don’t need to go out of your way to create new classes and functions that require a lot of extra code.

* Write cleaner, faster code. Even advanced programmers can make simple mistakes when writing functions. Using the Standard Library guarantees your code will run proficiently.

* Avoid maintenance problems. Sticking to the Standard Library makes testing a lot less stressful. If something you write yourself gets ingrained into the entirety of your code and you find a bug, it’s going to take a lot longer to go through your non-standardized code.

The code in the Standard Library is tested by hundreds of thousands of people and gets subjected to more testing and scrutiny than anything you’d implement yourself.

The Standard Library was developed by the greatest minds in C++ over the past few decades. You are guaranteed good performance, no bugs, and solutions that have been tested and re-tested for decades.

Go with the tried-and-true.
___

## What’s in the C++ Standard Library?

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/7gnmjtk3v54en8ez7wko.png)

The C++ Standard Library can be categorized into 3 components: **containers, iterators, and algorithms.**

The containers store collections of other objects, and replicate structures used over and over again in programming (arrays, queues, stacks, etc.). The algorithms can be used on ranges of elements. And the iterators are like the glue that binds the containers and algorithms — they’re used to move forward, backward, or to an arbitrary position in the container.

For the detail-obsessed, here’s an extensive list of items in the C++ Standard Library:

* **Concepts:** These provide a foundation for equational reasoning in programs.

* **Utilities:** General purpose utilities for program control, dynamic memory management, numeric limits, error handling, and more.

* **Strings:** Functions to handle wide and multibyte strings, and determine the type contained in character data.

* **Containers:** Containers for arrays, vectors, and lists. Associative containers. Stack and queue container adaptors.

* **Algorithms:** Algorithms that operate on containers, plus predefined execution policies for parallel versions of the algorithms.

* **Iterators:** Definitions for six kinds of iterators, as well as iterator traits, adaptors, and utility functions.

* **Numerics:** Common math functions, classes for representing complex numbers and arrays, random number generators, rational arithmetic and more.

* **Input/Output:** Forward declarations of all classes in the input/output library. Assorted input/output class templates.

* **Localization:** Localization support for character classification and string collation, numeric, monetary, date/time formatting and parsing, and message retrieval.

* **Regular Expressions:** Classes, algorithms and iterators to support regular expression processing.

* **Atomic Operations:** Components for fine-grained atomic operations, which allow for lockless concurrent programming.

* **Thread Support:** Class and supporting functions for threads, mutual exclusion primitives, primitives for asynchronous computations, and thread-waiting conditions.

* **File System:** Supporting functions for performing operations on file systems and their components (like paths, regular files, and directories).

* **Experimental Libraries:** Extra additions to the library, including extensions for parallelism and concurrency

___

## Learn the C++ Standard Library at your own pace

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/nzb568a3hwiiaob0n06z.png)


The list above goes on and on. There's a lot to learn to master the C++ standard library. If you want to jump into hands-on practice, check out Educative's course [C++ Standard Library including C++ 14 & C++ 17](https://www.educative.io/courses/cpp-standard-library-including-cpp-14-and-cpp-17?utm_source=medium&utm_medium=announcement&utm_campaign=c%2B%2Bstandardlibrary) to get started. 

Good luck on your C++ journey! If you have any questions or feedback, we’d love to hear from you. Leave us a comment and we’ll be in touch.

___

### Further readings and resources 

* Article - [C++ is a Good First Language to Learn](https://www.educative.io/blog/c-is-a-good-first-language-to-learn)
* Article - [How to Learn C++: The Complete Guide for Beginners](https://www.educative.io/blog/how-to-learn-cpp-the-guide-for-beginners)
* Online Courses - [C++ Learning Track](https://www.educative.io/track/c-plus-plus-for-programmers)
* Reference Sheet - [Microsoft Standard Library Reference](https://docs.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-reference?view=vs-2019)
* Reference Sheet - [C++ Core Guidelines: The Standard Library](https://www.modernescpp.com/index.php/c-core-guidelines-the-standard-library)