简体   繁体   English

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

[英]vector<string>::iterator - how to find position of an element

I am using the following code to find a string in an std::vector of string type. 我使用以下代码在string类型的std::vector中查找string But how to return the position of particular element? 但是如何返回特定元素的位置?

Code: 码:

#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;
}

Output: 输出:

FOUND AT : r

Expected Output: 预期产出:

FOUND AT : 9

You can use std::distance for that: 您可以使用std::distance

auto pos = std::distance(vec.begin(), it);

For an std::vector::iterator , you can also use arithmetic: 对于std::vector::iterator ,您还可以使用算术:

auto pos = it - vec.begin();

Use following : 使用以下:

if(it != vec.end())
   std::cout<< "Found At :" <<  (it-vec.begin())  ;
#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(),"a");
    //it++;
    int pos = distance(vec.begin(), it);

    if(it!=vec.end()){
        cout<<"FOUND  "<< *it<<"  at position: "<<pos<<endl;
    }
    else{
        cout<<"NOT FOUND"<<endl;
    }
    return 0;

使用此声明:

it = find(vec.begin(), vec.end(), "r") - vec.begin();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM