How to find out if an item is present in a std::vector?
Solution 1:
You can use std::find
from <algorithm>
:
#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()
This returns an iterator to the first element found. If not present, it returns an iterator to one-past-the-end. With your example:
#include <algorithm>
#include <vector>
if ( std::find(vec.begin(), vec.end(), item) != vec.end() )
do_this();
else
do_that();
Solution 2:
As others have said, use the STL find
or find_if
functions. But if you are searching in very large vectors and this impacts performance, you may want to sort your vector and then use the binary_search
, lower_bound
, or upper_bound
algorithms.