84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
在遍历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的大小是一個變量存儲的,所以這個過程並不是代價很高。