如何动态插入一对到可能unordered_list

How is the way to insert dynamically one pair to may unordered_list?

本文关键字:unordered list 何动态 动态 插入      更新时间:2023-10-16

如果我有一个unordered_map并且我想插入一个动态迭代的值,但始终std::unordered_map::insert只插入一次。

unordered_map<string, string> legalities;
vector<string> values = {"foo", "bar"};
for(auto& value : values) {
  legalities.insert({ "foo", value });
  cout << value << endl;
}
legalities.size(); // return 1

我怎样才能以这种方式插入?

那是因为std::unordered_map不允许重复键("foo"两次(。如果你想要重复的键,你应该使用std::unordered_multimap

26.2.7 无序关联容器
无序关联容器支持唯一键(如果每个键最多包含一个元素(。否则,它支持等效的密钥。 unordered_setunordered_map支持唯一键。 unordered_multisetunordered_multimap支持等效的密钥。

因此,您需要使用unordered_multimap以防您希望在地图中使用具有相同键"foo"的两个对象。