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