Скажем, у вас есть C ++ std::set
уникальных указателей, например
auto my_set = std::set<std::unique_ptr<std::string>>
{
std::make_unique<std::string>("monkey"),
std::make_unique<std::string>("banana"),
std::make_unique<std::string>("orange")
};
Используя функцию std::find_if
, как бы вы go находили первый элемент в этом наборе, чтобы указатель указывал to "orange
"?
Пока что у меня есть:
auto food = "orange";
auto find_orange
= std::find_if(my_set.begin(), my_set.end(), [&food](const auto& ptr) -> bool {
return *(*ptr) == food;
}
);
, но это не компилируется. Есть идеи относительно того, в чем проблема?
Также в таких функциях, что именно ptr
, т.е. параметр в предикате? Это указатель на каждый элемент контейнера?