Generate a vector, and try to iterate over it in 3 different ways:
- using iterator STL;
- using Range C++11;
- using indices.
the code above includes also time points, to collect some statistics
// using iterator STL
std::cout << std::endl << "using iterator STL" << std::endl;
std::chrono::steady_clock::time_point t_time1 = std::chrono::steady_clock::now();
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
//std::cout << *it << ", ";
*it = 1;
}
std::chrono::steady_clock::time_point t_time2 = std::chrono::steady_clock::now();
//Using Range C++11
std::cout << std::endl << "Using Range C++11" << std::endl;
std::chrono::steady_clock::time_point t_time3 = std::chrono::steady_clock::now();
for (auto & value : v) {
//std::cout << value << ", ";
value = 1;
}
std::chrono::steady_clock::time_point t_time4 = std::chrono::steady_clock::now();
//Using indices
std::cout << std::endl << "Using indices" << std::endl;
std::chrono::steady_clock::time_point t_time5 = std::chrono::steady_clock::now();
for (std::vector<int>::size_type ii = 0; ii != v.size(); ii++) {
//std::cout << v[ii] << ", ";
v[ii] = 1;
}
std::chrono::steady_clock::time_point t_time6 = std::chrono::steady_clock::now();
Change freely the size of the vector, then, if you try to understand how much time is spent to perform an assignment on the i-th element... (considering a vector with more or less 1000000 values)
Chrono outcomes
Vector Random Content integer with size 10000030
Vector iterator STL..: 5.34919 sec.us
Range c++11..........: 2.36629 sec.us
vector indices.......: 0.518377 sec.us