84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
在遍历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的大小是一个变量存储的,所以这个过程并不是代价很高。