がある場合std::vector<int>
、2 つの反復子を減算することで最小要素のインデックスを取得できます。
int min_index = std::min_element(vec.begin(), vec.end()) - vec.begin();
ただし、 a などのランダム アクセス イテレータを持たないコンテナではstd::list<int>
、これは機能しません。確かに、次のようなことは可能です
int min_index = std::difference(l.begin(), std::min_element(l.begin(), l.end()));
しかし、リストを2回反復する必要があります。
リストを 1 回反復するだけで、STL アルゴリズムを使用して最小値を持つ要素のインデックスを取得できますか?それとも独自の for ループをコーディングする必要がありますか?