给定以下代码:
struct Item
{
std::string name;
int someInt;
string someString;
Item(const std::string& aName):name(aName){}
};
std::unordered_map<std::string, Item*> items;
Item* item = new Item("testitem");
items.insert(make_pair(item.name, item);
项目名称将在内存中存储两次——一次作为 Item 结构的一部分,一次作为映射条目的键。是否可以避免重复?对于大约 100M 的记录,这种开销变得巨大。
注意:我需要在 Item 结构中包含名称,因为我使用 hashmap 作为另一个 Item-s 容器的索引,并且我无法访问映射的键值。