Предположим, что у меня есть набор unique_ptr:
std::unordered_set <std::unique_ptr <MyClass>> my_set;
Я не уверен, какой безопасный способ проверить, существует ли данный указатель в наборе. Обычный способ сделать это может состоять в вызове my_set.find ()
, но что я передаю в качестве параметра?
Все, что у меня снаружи, является необработанным указателем. Поэтому я должен создать еще один уникальный_ptr из указателя, передать его в find()
, а затем release()
этот указатель, иначе объект будет разрушен (дважды). Конечно, этот процесс может быть выполнен в функции, поэтому вызывающий может передать необработанный указатель, и я делаю преобразования.
Безопасен ли этот метод? Есть ли лучший способ работать с набором unique_ptr?