次のコードがあるとします。
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);
アイテム名は 2 回メモリに格納されます。1 回は Item 構造体の一部として、もう 1 回はマップ エントリのキーとして格納されます。重複を避けることはできますか?1 億レコード程度では、このオーバーヘッドは非常に大きくなります。
注: Item の別のコンテナーへのインデックスとしてハッシュマップを使用し、マップのキー値にアクセスできないため、Item 構造内に名前を付ける必要があります。