如何在一个句子中检查std :: vector中元素的存在?

yeg*_*256 20 c++

可能重复:
如何在std :: vector中查找项目?

这就是我要找的东西:

#include <vector>
std::vector<int> foo() {
  // to create and return a vector
  return std::vector<int>();
}
void bar() {
  if (foo().has(123)) { // it's not possible now, but how?
    // do something
  }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我正在寻找一种简短的语法来验证向量中元素的存在.我不想为这个向量引入另一个临时变量.谢谢!

Vla*_*mir 45

未分类的矢量:

if (std::find(v.begin(), v.end(),value)!=v.end())
    ...
Run Code Online (Sandbox Code Playgroud)

排序矢量:

if (std::binary_search(v.begin(), v.end(), value)
   ...
Run Code Online (Sandbox Code Playgroud)

PS可能需要包含<algorithm>标题

  • +1为PS,我从各种来源获得了上述代码,但不知道包含标头,因此我的代码给出了错误。谢谢。 (3认同)

Bri*_*ndy 8

int elem = 42;
std::vector<int> v;
v.push_back(elem);
if(std::find(v.begin(), v.end(), elem) != v.end())
{
  //elem exists in the vector
} 
Run Code Online (Sandbox Code Playgroud)


Pra*_*rav 8

尝试std::find

vector<int>::iterator it = std::find(v.begin(), v.end(), 123);

if(it==v.end()){

    std::cout<<"Element not found";
}
Run Code Online (Sandbox Code Playgroud)

  • 当然 if() 条件应该是 != 吗? (4认同)