如何在容器中找到存储指针的整数?

时间:2015-05-19 06:11:45

标签: c++ algorithm vector find std

容器存储指向整数的指针。我想使用普通变量找到integer = 66。 当我试图用指针做这件事时,没关系。 代码:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main ()
{
    int *a=new int(22);
    int *b=new int(44);
    int *c=new int(66);

    int d = 66;

    vector<int*> v1;
    v1.push_back(a);
    v1.push_back(b);
    v1.push_back(c);

    std::vector<int*>::iterator it;
    // it = find (v1.begin(), v1.end(), c); // Ok.
    it = find (v1.begin(), v1.end(), d);
    if (it != v1.end())
    {
        std::cout << "Element found in myvector: " << **it << '\n';
    }
    else
    {
        std::cout << "Element not found in myvector\n";
    }

    return 0;
}

我试图使用find_if()函数。

2 个答案:

答案 0 :(得分:2)

您可以像这样使用lambda function

std::find_if(
    std::begin(pointer_vec), std::end(pointer_vec), 
    [](const int *p){return p != nullptr && *p == 66;});

答案 1 :(得分:1)

在C ++ 11中,你可以这样做:

it = find_if (v1.begin(), v1.end(), [d](int* p){ return *p == d; });