1. ホーム
  2. c++

[解決済み] std::vectorのイテレータのインデックスを取得する最も効果的な方法は何ですか?

2022-03-19 03:01:41

質問

ベクトルに対して反復処理をしていて、イテレータが現在指しているインデックスが必要です。AFAIKでは、これは2つの方法で行うことができます。

  • it - vec.begin()
  • std::distance(vec.begin(), it)

これらの方法の長所と短所は何でしょうか?

どのように解決するのですか?

できれば it - vec.begin() Naveenが述べたのと逆の理由で、正確には はないでしょう。 ベクトルをリストに変更すると、コンパイルされます。もし、すべての反復処理中にこれを行うと、O(n)アルゴリズムをO(n^2)アルゴリズムに簡単に変えてしまうことができます。

また、反復中にコンテナ内を飛び回らないのであれば、インデックスを2つ目のループカウンタとして保持する方法もあります。

it は、コンテナ・イテレータの一般的な名前です。 std::container_type::iterator it; .