правильный способ создания поисковых карт для экземпляров.У меня есть структура, определенная Node следующим образом:
struct Node
{
int32_t id;
std::string name;
...
}
Я хочу создать 2 карты поиска на основе идентификатора, а другой - на основе имени.В узле есть и другие атрибуты, которые также должны искать карты, но они динамические, поэтому не у каждого экземпляра узла будет запись взгляда на эти дополнительные карты.
только с одной картой поиска, которую я планировал создатькак
typedef std::unoredered_map<int32_t, std::unique_ptr <Node> > NodesById;
Я считаю, что просто могу удалить это, просто erase
или [id] = new 'overwrite!'
операция и не нужно беспокоиться об этом.Но тогда как я могу добавить тот же экземпляр Node, чтобы сказать другую карту
typedef std::unoredered_map<std::string, std::unique_ptr <Node> > NodesByName;
Я не могу поместить тот же экземпляр Node в unique_ptr.Поэтому мой вопрос заключается в том, как правильно хранить экземпляры Node в нескольких справочных таблицах и при этом достигать интеллектуального управления памятью.