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

How to find integer in container which stores pointers?

本文关键字:整数 存储 指针      更新时间:2023-10-16

容器存储指向整型的指针。我想找到整数=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 myvectorn";
    }
    return 0;
}

我试图使用find_if()函数

可以这样使用lambda函数:

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

在c++ 11中可以这样做:

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