У меня есть фрагмент кода, который использует std :: set для хранения группы указателей.

Я использовал это, чтобы быть уверенным, что каждый указатель будет присутствовать в моем контейнере только один раз.

Затем я услышал о std :: unique_ptr, которые гарантируют, что указатель будет существовать только один раз во всем моем коде, и это именно то, что мне нужно.

Итак, мой вопрос довольно прост, следует ли мне изменить тип контейнера на std :: vector? Или он ничего не изменит, оставив std :: set?

0
Sébastien Bémelmans 19 Апр 2018 в 16:39

1 ответ

Лучший ответ

Я думаю, что работа, которую выполняет ваш набор, вероятно, отличается от unique_ptr.

Ваш набор, вероятно, записывает некоторые события и гарантирует, что только 1 событие записывается для каждого объекта, который запускается, используя эти термины очень вольно.
Примером может служить отслеживание сетки и запись всех пройденных узлов.
Сами объекты уже существуют и принадлежат где-то еще.

Цель unique_ptr - гарантировать, что для динамически выделяемого объекта существует только один владелец, и обеспечить автоматическое уничтожение объекта. У ваших объектов уже есть хозяева, новые им не нужны!

1
Gem Taylor 19 Апр 2018 в 18:37