[英]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.