Нет, скорее всего при добавлении если найден уже элемент с таким ключем, то он просто добавляет его в существующий список.
Это легко проверить, ведь ссылка на ключ доступна
C++ (Qt)
#include <stdio.h>
#include <map>
int main()
{
typedef std::multimap <int, int> TMap;
TMap test;
for (size_t i = 0; i < 10; ++i)
test.insert(std::make_pair(0, 0));
for (TMap::iterator it = test.begin(); it != test.end(); ++it)
printf("&key = %p, &val = %p\n", &it->first, &it->second);
return 0;
}
У меня адреса всех ключей уникальны (как и значений). А у Вас?
Если вдруг это не так, то можешь написать свой map с сравнением и хранением.
Если для Вас такое написание тривиально (для меня нет), то мне было бы интересно посмотреть "как" (ну хотя бы набросок). А без этого - звучит несерьезно
И скажи что для тебя важнее: сэкономить память или увеличить скорость операций, ибо одновременно два параметра не улучшить так как тут и так все максимально оптимально сделано.
Эта дежурная фраза в данном случае неудачна/неуместна - мультимапа не только жрет в неск раз больше памяти, но "зато" и работает медленнее (больше элементов - больше шагов поиска).