c++ - 循环判断条件为vec.size(),每次调用会不会优化?需要特地先求出size()吗?
怪我咯
怪我咯 2017-04-17 15:07:09
0
2
689

在遍历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
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(2)
刘奇

一般情況下請使用 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的大小是一個變量存儲的,所以這個過程並不是代價很高。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!