std::vectorで、指定した要素が含まれているか調べ、
含まれていたらそのインデックス番号(何番目の要素か)を返す関数を作ってみた。
以下の例では、std::vector<std::string>の中にtargetが含まれるか調べ、
含まれているインデックスのベクトル(std::vector<int>)を返している。
#include <vector>
#include <algorithm>
#include <iostream>
std::vector<int> indexOf( std::vector< std::string > strvec, std::string target ){
std::vector< int > rt;
std::vector< std::string >::iterator it = strvec.begin();
while( strvec.end() != ( it = std::find( it, strvec.end(), target ) ) ){
rt.push_back( std::distance( strvec.begin(), it ) );
it++;
}
if( rt.empty() ) std::cout << target << " was not found." << std::endl;
return rt;
}
#include <algorithm>
#include <iostream>
std::vector<int> indexOf( std::vector< std::string > strvec, std::string target ){
std::vector< int > rt;
std::vector< std::string >::iterator it = strvec.begin();
while( strvec.end() != ( it = std::find( it, strvec.end(), target ) ) ){
rt.push_back( std::distance( strvec.begin(), it ) );
it++;
}
if( rt.empty() ) std::cout << target << " was not found." << std::endl;
return rt;
}
0 件のコメント:
コメントを投稿