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

在遍历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)
刘奇

일반적으로 벡터를 순회하려면 반복자나 범위를 사용하세요. 인덱스를 사용해야 하는 경우 루프 중에 벡터의 길이가 변경되는지 주의해야 합니다.

으아악
阿神

최적화 o2 등의 매개변수를 지정하면 최적화될 수 있습니다. 루프에서 벡터의 크기를 수정하지 않으면 실제로 벡터의 크기가 변수에 저장되기 때문에 이 프로세스는 그렇지 않습니다. 매우 비싸다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿