C++ 如何在向量中搜索元素?
我有一个这样的代码C++ 如何在向量中搜索元素?,c++,vector,find,C++,Vector,Find,我有一个这样的代码 std::vector<string>::iterator p; p = find(v.begin(),v.end(),"asdasda"); cout << *p << endl; std::vector::迭代器p; p=查找(v.begin(),v.end(),“asdasda”); coutp没有指向“垃圾”,当找不到内容时,它只是变成v.end() if (p != v.end()) { std::cout <&
std::vector<string>::iterator p;
p = find(v.begin(),v.end(),"asdasda");
cout << *p << endl;
std::vector::迭代器p;
p=查找(v.begin(),v.end(),“asdasda”);
coutp
没有指向“垃圾”,当找不到内容时,它只是变成v.end()
if (p != v.end()) {
std::cout << "v[" << (p - v.begin()) << "] = ";
std::cout << *p << std::endl;
}
if(p!=v.end()){
std::cout如果std::find
没有找到任何内容,在本例中,迭代器被设置为v.end()
if ( p != v.end() )
{
// iterator is good
}
还要注意std::find
的一般情况
以下是它的典型定义:
namespace std {
template <class InputIterator, class T>
InputIterator find(InputIterator start,
InputIterator finish,
const T& value);
}
名称空间std{
模板
输入计算器查找(输入计算器启动,
输入计数器完成,
常数(T和值);
}
如果std::find
失败,它将返回finish
迭代器,因为搜索是[start,finish)
,包括start
,但排除finish如果没有找到您搜索的值,find将返回end迭代器。
您可以通过在显示行之前添加if(p!=v.end())
来避免错误。如何在v中找到“asdasda”的位置。就像我们之前将v[3]声明为“asdasda”,那么我如何从查找中知道v[3]是“asdasda”?p-v.start()
,如果p!=v.end()
。如何找到“asdasda”的位置在v.中,就像我们之前声明v[3]为“asdasda”,那么我怎么能从发现中知道v[3]为“asdasda”?