如何找出一个项目是否存在于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 findfind_if函数。 但是,如果您在非常大的向量中搜索并且这会影响性能,则可能需要对矢量进行排序,然后使用binary_searchlower_boundupper_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?

下一篇: Why doesn't GCC optimize structs?