Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在向量中搜索元素?_C++_Vector_Find - Fatal编程技术网

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”);

cout
p
没有指向“垃圾”,当找不到内容时,它只是变成
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”?