У меня есть std :: set уникальных указателей в классе вроде std::set<std::unique_ptr<T>> my_set{};
, и я хочу написать метод, который создает отсортированный вектор значений, на которые указывают эти уникальные указатели.
В настоящее время У меня есть:
auto convert() -> std::vector<T> {
auto vec = std::vector<T>();
for (auto const& element : my_set) {
vec.push_back(element.get());
}
return vec;
}
Однако я не уверен, что это приведет к требуемой сортировке, которую я хочу? Кто-нибудь знает, как я могу отсортировать указатели в наборе таким образом, чтобы указанные значения располагались в порядке возрастания (что означает, что я могу просто вернуть sh каждый из них обратно в набор)?
EDIT: чтобы сделать вопрос можно ли использовать std::transform(my_set.begin(), my_set.end(), vec.begin(), [](std::unique_ptr<T> ptr) -> T { return ptr.get(); });
?