84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
在遍历vector容器时,使用如下方法遍历:
for(int i=0; i<vec.size(); ++i) //do something
循环条件中使用了.size()操作,我用g++测试,每次编译器都会执行这个操作,那么效率会不会有影响?编译器不会优化吗?
需不需要提前求出来,比如:
const int size = vec.size(); for(int i=0; i<size; ++i) //do something
走同样的路,发现不同的人生
一般情况下请使用 iterator 或 range for 遍历 vector,如果必须使用 index,则需要注意在循环过程中 vector 的长度是否会发生变化。
std::vector<int> vi; for (auto it = vi.begin(); it != vi.end(); ++it) // do something for (auto & i : vi) // do something
如果指定了优化o2之类的参数可能会优化,如果你没有在循环中修改vector的大小的话,其实因为vector的大小是一个变量存储的,所以这个过程并不是代价很高。
一般情况下请使用 iterator 或 range for 遍历 vector,如果必须使用 index,则需要注意在循环过程中 vector 的长度是否会发生变化。
如果指定了优化o2之类的参数可能会优化,如果你没有在循环中修改vector的大小的话,其实因为vector的大小是一个变量存储的,所以这个过程并不是代价很高。