さまざまなSTLオブジェクトと関数の標準を見ると、私には意味がありません。コンテナオブジェクトのbegin()関数とend()関数が、定数参照ではなく値でイテレータを返すのはなぜですか。イテレータはコンテナオブジェクトによって内部的に保持され、コンテナが変更されるたびに調整される可能性があるように思われます。これにより、次のようなforループで不要な一時的なものを作成するコストが軽減されます。
for (std::vector<int>::iterator it=my_vec.begin(); it!=my_vec.end(); ++it){
//do things
}
これは有効な懸念事項ですか?これを悪い考えにするイテレータへの参照を使用することについて何かありますか?ほとんどのコンパイラ実装は、とにかくこの懸念を最適化しますか?