c++ Map中的两个键值可以相同吗

btxsgosb  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(165)

我定义了一个Map

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

我在里面存储值比如m_mapABC[strValue 1]= strValue 2;
假设我在Map中存储了10个条目。在这种情况下,可以使用相同的键值来存储10个不同的值吗?或者每次都会被重写...我猜会的。
在这种情况下,使用std::pair会有所帮助,我猜。

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

std::pair可以有2个相等的键值(我猜我是对的)...每种情况下的bool值是什么,第一次是TRUE,第二次是FALSE,还是反之亦然?.
我还听说过std::tupleboost::tuple,其中单个Key可以用于存储不同的值。
我不是很清楚如何迭代它们。。。我需要帮助

juud5qan

juud5qan1#

您可能需要multimap而不是map

5rgfhyps

5rgfhyps2#

如果要将多个值与单个键关联,请使用std::multimap(或std::unordered_multimap)而不是std::map
在某些情况下,使用std::map<key_type, std::vector<mapped_type> >是有意义的(就我个人而言,我经常觉得这样更好)。

0dxa2lsx

0dxa2lsx3#

如果你想用同一个键存储多个项目,你应该使用multimap(也适用于unordered_变体)。
以下内容应该有效:

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

你的multimap应该包含10个带有“hello world”键的条目和10个不同的值。

相关问题