Consider a container like so:
std::vector<int> cont = {0, 1, 2, 3};
Range-based for loops allow you to loop over each element in a container without writing an index or iterator:
for (auto element : cont) {
std::cout << element << "\n";
}
The above is equivalent to this for loop:
for (size_t i = 0; i < cont.size(); i++) {
auto element = cont[i];
std::cout << element << "\n";
}
And you can also get elements by reference if you want mutation:
for (auto& element : cont) {
element *= 2;
}
You can get elements as a const if you do not need mutation:
for (auto const& element : cont) {
std::cout << element << "\n";
}
Dan