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を得る方法はこちらを参考にさせていただきました。