Another way to increment an iterator, and preferred if you’re using std::move
in your code, is to use std::next
over ++
.
Here’s an example:
#include <iostream>
int main(int, char**)
{
// Our string to iterate over
std::string message = "Hello world!";
auto itr = message.begin();
while (itr != message.end())
{
std::cout << "char: " << (*itr) << "\n";
// Step up the iterator
itr = std::next(itr);
}
std::cout << "All done!\n";
}
Now, since we are not modifying anything in our string, we could also use const iterators, simply replacing begin
and end
with cbegin
and cend
:
int main(int, char**)
{
// Our string to iterate over
std::string message = "Hello world!";
auto itr = message.cbegin();
while (itr != message.cend())
{
std::cout << "char: " << (*itr) << "\n";
// Step up the iterator
itr = std::next(itr);
}
std::cout << "All done!\n";
}
Refs:
https://en.cppreference.com/w/cpp/iterator/next
https://en.cppreference.com/w/cpp/iterator/begin