Ich verwende den folgenden Code, um eine Zeichenfolge in einem std::vector
vom Typ string
zu finden. Aber wie kann man die Position eines bestimmten Elements zurückgeben?
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;
}
Ausgabe:
FOUND AT : r
Erwartete Ausgabe:
FOUND AT : 9
Sie können std::distance
dafür verwenden:
auto pos = std::distance(vec.begin(), it);
Für einen std::vector::iterator
können Sie auch Arithmetik verwenden:
auto pos = 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;
Verwenden Sie folgendes:
if(it != vec.end())
std::cout<< "Found At :" << (it-vec.begin()) ;
Verwenden Sie diese Aussage:
it = find(vec.begin(), vec.end(), "r") - vec.begin();