容器存储指向整数的指针。我想使用普通变量找到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()函数。
答案 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; });