在遍历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
怪我咯2017-04-17 15:09:09
通常、ベクトルを走査するには反復子または範囲を使用してください。インデックスを使用する必要がある場合は、ループ中にベクトルの長さが変化するかどうかに注意する必要があります。
リーリー阿神2017-04-17 15:09:09
最適化 o2 などのパラメータを指定すると、ループ内でベクトルのサイズを変更しない場合、実際にはベクトルのサイズが変数に格納されるため、この処理は最適化されません。非常に高価です。