vectorの要素の値にマッチするindexを取得する

なんだか忘れそうなのでメモ。

std::vectorにおける要素の値に対応するindexを取る方法です。

#include <iostream>
#include <vector>
#include <algorithm>

int main(void)
{
        std::vector<int> vec;
        vec.push_back(5);
        vec.push_back(2);
        vec.push_back(4);

        std::vector<int>::iterator itr;
        const int wanted = 2; // 2に対応するindex(この例では1)を取って来たい
        itr = std::find(vec.begin(), vec.end(), wanted);
        if (itr == vec.end()) std::cout << "search failed" << std::endl;
        const int wanted_index = std::distance(vec.begin(), itr);
        std::cout << "Result: vec[" << wanted_index << "] = " << *itr << std::endl;
}

iteratorからそのIndexを得る方法はこちらを参考にさせていただきました。

Shoichiro Masuoka

CNS, the Univ. of Tokyo. Dcotoral student

関連項目