您可以使用<algorithm>
std::find
:
#include <algorithm>
#include <vector>
vector<int> vec;
//can have other data types instead of int but must same datatype as item
std::find(vec.begin(), vec.end(), item) != vec.end()
这将返回一个布尔值(如果存在则为true
,否则为false
以您的示例为例:
#include <algorithm>
#include <vector>
if ( std::find(vec.begin(), vec.end(), item) != vec.end() )
do_this();
else
do_that();
就像其他人所说的那样,请使用 STL 的find
或find_if
函数。但是,如果要搜索非常大的向量,并且这会影响性能,则可能需要对向量进行排序,然后使用binary_search
, lower_bound
或upper_bound
算法。
使用 stl 的算法标头中的 find。我已经说明了 int 类型的用法。您可以使用任何您喜欢的类型,只要您可以比较相等性即可(如果需要,对于自定义类,请重载 ==)。
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
typedef vector<int> IntContainer;
typedef IntContainer::iterator IntIterator;
IntContainer vw;
//...
// find 5
IntIterator i = find(vw.begin(), vw.end(), 5);
if (i != vw.end()) {
// found it
} else {
// doesn't exist
}
return 0;
}