【问题标题】:C++ working with a map with vectors as valuesC++ 使用向量作为值的地图
【发布时间】:2019-09-18 09:55:52
【问题描述】:

我有一个将字符串映射到字符串向量的映射:

std::unordered_map<std::string, std::vector<std::string>>> myMap;.

有没有很好的方法(代码尽可能少,同时仍然可读)将值附加到给定键的向量?

对于向量尚未初始化的新键,如何处理向向量添加值的情况?

【问题讨论】:

  • myMap[key].push_back(value)?
  • @Someprogrammerdude operator[] 是否处理 key 不在 map 中的情况?
  • 如果键不存在,operator[] 函数会创建一个默认构造函数或初始化值,因此对于您的向量,它将创建一个空向量。这应该在很多地方都有详细记录。
  • 这意味着,另一方面,如果您不想想要插入不存在的元素(并且您不能在 const 上使用它),则不能使用 operator[]地图)。在这种情况下,您将依赖 find 函数。

标签: c++ c++11 dictionary


【解决方案1】:

你想要:

myMap["key"].push_back("string");

如果此键的向量不存在,则会自动创建。

【讨论】:

  • "也许值得指出一个空向量将被自动创建。" - 某人删除的评论
猜你喜欢
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 2013-04-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2017-04-01
相关资源
最近更新 更多