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