JiaHeng-DLUT
7/27/2019 - 9:55 AM

Access

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