我已定义了地图
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个键值相等(我猜我是对的)...在每种情况下bool值是多少,在第一种情况下它是TRUE,第二次是FALSE还是在反之亦然?
我还听说过std::tuple
或boost::tuple
,其中一个密钥可用于存储不同的值。
我不太清楚如何迭代它们......我需要帮助
答案 0 :(得分:5)
您可能需要multimap
而不是map
。
答案 1 :(得分:5)
如果您想将多个值与一个键相关联,请使用std::multimap
(或std::unordered_multimap
)代替std::map
。
在某些情况下,改为std::map<key_type, std::vector<mapped_type> >
是有意义的(个人而言,我经常认为这更可取)。
答案 2 :(得分:3)
如果您想使用相同的密钥存储多个项目,则应使用multimap
(也适用于unordered_
个变体)。
以下内容应该有效:
std::multimap<std::string,int> mm;
for( int i = 0; i != 10; ++i )
mm.insert(make_pair("hello world"), i);
您的多重映射应包含十个带有“hello world”键和10个不同值的条目。