ベクトルを反復処理していて、反復子が現在指しているインデックスが必要です。次の方法の長所と短所は何ですか?
it - vec.begin()
std::distance(vec.begin(), it)
ベストアンサー1
it - vec.begin()
私はNaveen が挙げたのと正反対の理由でそれを好みます。つまり、ベクトルをリストに変更するとコンパイルされなくなるからです。これをすべての反復で実行すると、O(n) アルゴリズムが O(n^2) アルゴリズムに簡単に変わってしまう可能性があります。
反復中にコンテナ内を移動しない場合は、インデックスを 2 番目のループ カウンターとして保持するという別のオプションもあります。
注:it
はコンテナ イテレータの一般的な名前ですstd::container_type::iterator it;
。