検索

ホームページ  >  に質問  >  本文

c++ - 循环判断条件为vec.size(),每次调用会不会优化?需要特地先求出size()吗?

在遍历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
怪我咯怪我咯2808日前748

全員に返信(2)返信します

  • 怪我咯

    怪我咯2017-04-17 15:09:09

    通常、ベクトルを走査するには反復子または範囲を使用してください。インデックスを使用する必要がある場合は、ループ中にベクトルの長さが変化するかどうかに注意する必要があります。

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 15:09:09

    最適化 o2 などのパラメータを指定すると、ループ内でベクトルのサイズを変更しない場合、実際にはベクトルのサイズが変数に格納されるため、この処理は最適化されません。非常に高価です。

    返事
    0
  • キャンセル返事