減算イテレータと比べて std::distance の利点は何ですか? 質問する

減算イテレータと比べて std::distance の利点は何ですか? 質問する

ベクトルを反復処理していて、反復子が現在指しているインデックスが必要です。次の方法の長所と短所は何ですか?

  • 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;

おすすめ記事