C++11 introduced some features which make working with STL containers much easier. One common situation is the need to iterate over a container and to perform some operation(s) on each item. Consider the following typical example:
std::vector<SomeType> container;// ...for(std::vector<SomeType>::iterator iter = container.begin();iter != container.end();++iter){const SomeType& item = *iter;// ...}
This syntax has a couple of drawbacks:
- It is rather verbose
- Every aspect of the container’s type needs to be included in the definition of
iter