// use begin() and end()
for (vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++) {
cout << *iter << " ";
}
cout << endl;
// use cbegin() and cend()
for (vector<int>::const_iterator iter = vec.cbegin(); iter != vec.cend(); iter++) {
cout << *iter << " ";
}
cout << endl;
/*
* The iterator returned by vector::cend cannot be used to modify the contents it points to, even if the vector object is not itself const.
* vector<int>::iterator iter1 = vec.begin();
* (*iter1)++; // Pass
* vector<int>::const_iterator iter2 = vec.cbegin();
* // (*iter2)++; // Error: expression must be a modifiable lvalue
*/
// use auto
for (auto iter = vec.cbegin(); iter != vec.cend(); iter++) {
cout << *iter << " ";
}
cout << endl;