如何获得指针?
我想将一个指针作为您看到的lambda表达式的参数!
'''
vector<unique_ptr<int>> arr{};
for (int i = 0; i < 100; ++i)
{
arr.emplace_back(i);
}
auto p = find_if(arr.begin(), arr.end(), [](const unique_ptr<int>& a) // error
{
return *a == 10;
});
cout << *p << endl;
'''
问题不是lambda,而是在向量中构造元素的方式。这就是您想要的方式:
for (int i = 0; i != 100; ++i) {
arr.emplace_back( std::make_unique<int>( i ) );
}
问题是,类模板std :: unique_ptr没有隐式构造函数,该构造函数接受模板参数类型的对象。
所以这个循环
for (int i = 0; i < 100; ++i)
{
arr.emplace_back(i);
}
不正确。
也有此声明
cout << *p << endl;
也是不正确的。 Insetad写
cout << **p << endl;
看来您是说以下
for (int i = 0; i < 100; ++i)
{
arr.emplace_back( make_unique<int>( i ) );
}
auto p = find_if(arr.begin(), arr.end(), [](const unique_ptr<int>& a) // error
{
return *a == 10;
});
cout << **p << endl;