Book Image

Expert C++ - Second Edition

By : Marcelo Guerra Hahn, Araks Tigranyan, John Asatryan, Vardan Grigoryan, Shunguang Wu
5 (1)
Book Image

Expert C++ - Second Edition

5 (1)
By: Marcelo Guerra Hahn, Araks Tigranyan, John Asatryan, Vardan Grigoryan, Shunguang Wu

Overview of this book

Are you an experienced C++ developer eager to take your skills to the next level? This updated edition of Expert C++ is tailored to propel you toward your goals. This book takes you on a journey of building C++ applications while exploring advanced techniques beyond object-oriented programming. Along the way, you'll get to grips with designing templates, including template metaprogramming, and delve into memory management and smart pointers. Once you have a solid grasp of these foundational concepts, you'll advance to more advanced topics such as data structures with STL containers and explore advanced data structures with C++. Additionally, the book covers essential aspects like functional programming, concurrency, and multithreading, and designing concurrent data structures. It also offers insights into designing world-ready applications, incorporating design patterns, and addressing networking and security concerns. Finally, it adds to your knowledge of debugging and testing and large-scale application design. With Expert C++ as your guide, you'll be empowered to push the boundaries of your C++ expertise and unlock new possibilities in software development.
Table of Contents (24 chapters)
1
Part 1:Under the Hood of C++ Programming
7
Part 2: Designing Robust and Efficient Applications
18
Part 3:C++ in the AI World

Iterating containers

A container that is not iterable is analogous to a car that cannot be driven. A container, after all, is a collection of items. The for loop is one of the most frequent techniques we can use to iterate over container elements:

std::vector<int> vec{1, 2, 3, 4, 5};for (int ix = 0; ix < vec.size(); ++ix) {
std::cout << vec[ix] << ", ";
}

For element access, containers offer a distinct set of actions. operator[], for example, is provided by the vector but not by the list. std::list has the front() and back() methods, which return the first and last elements, respectively. std::vector, as already discussed, additionally provides at() and operator[].

This means that we cannot use the preceding loop to iterate list elements. However, we can loop over a list (and vector) with a range-based for loop, as follows:

std::list<double> lst{1.1, 2.2, 3.3, 4.2};for (auto& elem : lst) {
std::cout << elem << "...