c_like.cpp
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
// vec.at[i]
}
cout << endl;
for_auto.cpp
for (auto val : vec) {
cout << val << " ";
}
for_iterator.cpp
// 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;
for_each.cpp
#include <algorithm>
void print(const int& val) {
cout << val << " ";
}
for_each(vec.begin(), vec.end(), print);
for_each_lambda.cpp
for_each(vec.cbegin(), vec.cend(), [](const int& val)->void { cout << val << " "; });