vectorの指定したiteratorの要素番号を取得する
これも良く忘れるのでメモん。例えば最大の要素自体はmax_elementで取得できるんだけど、それのindex番号が欲しい時の書き方。iteratorの初めとのdistanceを取ればよい。別に最大要素のiteratorじゃなくても良くて適当なiteratorとのdistanceしてやればいい。
#include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<int> x; x.push_back(3); x.push_back(8); x.push_back(1); x.push_back(2); std::vector<int>::iterator iter = std::max_element(x.begin(), x.end()); size_t index = std::distance(x.begin(), iter); std::cout << "max element is " << x[index] << std::endl; return 0; }
実行結果
max element is 8