映射中的两个键值可以相同吗?

Can two Key Values be same in a Map

本文关键字:键值 两个 映射      更新时间:2023-10-16

我定义了一个地图

boost::unordered_map<"std::string,std::string">m_mapABC ;

我将值存储在其中,例如m_mapABC[strValue1]=strValue2;

假设我在地图上存储了 10 个条目。在这种情况下,是否可以使用相同的键值来存储 10 个不同的值。还是每次都写完...我想会的。
在这种情况下,我想使用std::pair会有所帮助。

std::map<"std::string, std::pair<"std::string", bool>>myMap2

std::pair可以有 2 个键值相等(我想我是对的)...每种情况下的布尔值是多少,在第一种情况下是 TRUE 还是在第二次情况下为 FALSE,反之亦然?

我还听说过std::tupleboost::tuple,其中单个键可用于存储不同的值。

我不太清楚如何遍历它们......我需要帮助

您可能想要multimap而不是map

如果要将多个值与单个键相关联,请使用std::multimap(或std::unordered_multimap)而不是std::map

在某些情况下,改用std::map<key_type, std::vector<mapped_type> >是有意义的(就个人而言,我经常发现这更可取)。

如果要使用同一键存储多个项目,则应使用multimap(也适用于unordered_变体)。

以下方法应该有效:

std::multimap<std::string,int> mm;
for( int i = 0; i != 10; ++i )
  mm.insert(make_pair("hello world"), i);

您的多映射应包含 10 个带有键"hello world"和 10 个不同值的条目。