相关疑难解决方法(0)

如何在std :: vector中找到元素位置?

我需要在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作为索引时,如何表示在向量中找不到元素?

c++ search stl vector

35
推荐指数
4
解决办法
12万
查看次数

vector <string> :: iterator - 如何查找元素的位置

我使用下面的代码找到一个字符串std::vectorstring类型.但是如何返回特定元素的位置?

码:

#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

c++ iterator stl stdvector

11
推荐指数
1
解决办法
5万
查看次数

标签 统计

c++ ×2

stl ×2

iterator ×1

search ×1

stdvector ×1

vector ×1