書くとき
for(const auto& val: my_container)
sum += val
Visual Studio は の変更可能なバージョンを選択しbegin()ます。これは設計によるものですか、それともバグですか?
私はコピー オン ライト コンテナーを使用しているため、これは私のコードではかなりのパフォーマンスの問題です。
書くとき
for(const auto& val: my_container)
sum += val
Visual Studio は の変更可能なバージョンを選択しbegin()ます。これは設計によるものですか、それともバグですか?
私はコピー オン ライト コンテナーを使用しているため、これは私のコードではかなりのパフォーマンスの問題です。
これは仕様によるものです。my_container「foreach」ループは、const として扱うかどうかを決定するときに、反復変数の修飾子または参照修飾子を調べません。回避策は const を明示的に追加することです
const auto& my_container_const = my_container;
for(const auto& val: my_container_const)
sum += val
これは予想される動作でconst_iteratorありconst iterator、いずれの場合も、戻り値を格納する変数ではなく、コンテナの性質にbegin応じて const を返します。const