Я использую std :: map, чтобы сохранить некоторые вещи, ключ Guid *.Заменить ключ на std :: map
typedef boost::tuple<c_ptr, handler_ptr> ctuple;
typedef std::map<GUID *, ctuple> c_map;
Мой вопрос: ли у меня способ изменить ключ элемента в станд :: карта? КРОМЕ скопировать существующие данные в новый элемент, который есть новый ключ и удалить предыдущий/старый элемент (со старым ключом)
Благодаря
См. Также [Как изменить значения ключа в контейнере std :: map] (http://stackoverflow.com/q/3884572/96780). –
Кроме копий? * Переместите * данные в новый элемент :-) –
Предполагая, что карта внутренне реализована с использованием сбалансированного двоичного дерева, просто «изменение» ключевых данных приведет к уничтожению цели и порядка дерева. Операции, которые вы указали, необходимы для создания нового элемента и удаления/перебалансировки дерева. –