私はその後、私が持っている、インデックスでベクトルを反復処理したい:コンパイラは "for"文で2番目の条件を最適化しますか?
for(size_t i=0;i<v.size();++i)
{...}
私が知って訪問するイテレータを使用して、より効果的ですが、私はちょうど、コンパイラの最適化についての技術的な観点で議論したいです。
私の質問は一度だけ、または複数回、この「v.size()」を実行しないのですか?
size_t s=v.size()
for(size_t i=0;i<s;++i)
:私はしていないように - コンパイラはサイズが一度十分に計算する必要がある、または任意の最適化戦略により、複数回呼び出される必要があるかどうかを決定するために私を助ける
あるいは、
コードをより効率的にするには?
保証はありません。この標準では、コンパイラーはこれを行う必要はなく、そうすることも禁止していません。したがって、それはあなたのコンパイラに完全に依存します。分解を確認して確認する必要があります。または、それが正しいことを単に信じる。 –
私の経験は毎回実行されることです。 –
一般に、オプティマイザが何をするのかを見たい場合は、[godbolt](http://gcc.godbolt.org)にアクセスし、コードを入力します。 – PaulMcKenzie