如何找出一个项目是否存在于std :: vector中?
我想要做的就是检查向量中是否存在元素,以便处理每个案例。
if ( item_present )
do_this();
else
do_that();
你可以使用<algorithm>
std::find
:
std::find(vector.begin(), vector.end(), item) != vector.end()
这会返回一个bool(如果存在,则返回true
,否则返回false
)。 用你的例子:
#include <algorithm>
if ( std::find(vector.begin(), vector.end(), item) != vector.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;
}
链接地址: http://www.djcxy.com/p/15055.html
上一篇: How to find out if an item is present in a std::vector?