Book Image

The C++ Standard Library - Second Edition

By : Rainer Grimm
Book Image

The C++ Standard Library - Second Edition

By: Rainer Grimm

Overview of this book

Standard template library enables programmers to speed up application development using the built-in data structures and algorithms in their codes. The C++ Standard Library is a comprehensive guide to the updated library of classes, algorithms, functions, iterators, and containers and serves as the best reference to the current C++ 17 standard. Starting with the introduction and history of the standard library, this book goes on to demonstrate how quickly you can manipulate various C++ template classes while writing your applications. You'll also learn in detail the four types of STL components. Then you'll discover the best methods to analyze or modify a string. You'll also learn how to make your application communicate with the outside world using input and output streams and how to use the non-owning string objects with regular strings. By the end of this book, you'll be able to take your programming skills to a higher level by leveraging the standard C++ libraries.
Table of Contents (19 chapters)
Free Chapter
1
Reader Testimonials
8
6. Adaptors for Containers
19
Index

for_each

std::for_each applies a unary callable to each element of its range. The range is given by the input iterators.

UnFunc std::for_each(InpIt first, InpIt second, UnFunc func)
void std::for_each(ExePol pol, FwdIt first, FwdIt second, UnFunc func)

std::for_each when used without an explicit execution policy is a special algorithm because it returns its callable argument. If you invoke std::for_each with a function object, you can store the result of the function call directly in the function object.

InpIt std::for_each_n(InpIt first, Size n, UnFunc func)
FwdIt std::for_each_n(ExePol pol, FwdIt first, Size n, UnFunc func)

std::for_each_n is new with C++17 and applies a unary callable to the first n elements of its range. The range is given by an input iterator and a size.

std::for_each
// forEach.cpp
...
#include <algorithm>
...
template <typename T>
class ContInfo{
public:
  void operator()(T t){
    num++;
    sum+= t;
  }
  int getSum() const{...