書くとき
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