我需要在std :: vector中找到一个元素位置,用它来引用另一个向量中的元素:
int find( const vector<type>& where, int searchParameter )
{
for( int i = 0; i < where.size(); i++ ) {
if( conditionMet( where[i], searchParameter ) ) {
return i;
}
}
return -1;
}
// caller:
const int position = find( firstVector, parameter );
if( position != -1 ) {
doAction( secondVector[position] );
}
Run Code Online (Sandbox Code Playgroud)
但是vector::size()返回size_t对应于unsigned不能直接存储的整数类型-1.当使用size_t而不是int作为索引时,如何表示在向量中找不到元素?
我使用下面的代码找到一个字符串std::vector的string类型.但是如何返回特定元素的位置?
码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<string> vec;
vector<string>::iterator it;
vec.push_back("H");
vec.push_back("i");
vec.push_back("g");
vec.push_back("h");
vec.push_back("l");
vec.push_back("a");
vec.push_back("n");
vec.push_back("d");
vec.push_back("e");
vec.push_back("r");
it=find(vec.begin(),vec.end(),"r");
//it++;
if(it!=vec.end()){
cout<<"FOUND AT : "<<*it<<endl;
}
else{
cout<<"NOT FOUND"<<endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
FOUND AT : r
预期产出:
FOUND AT : 9