4

我已经定义了一个地图

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在哪里可以使用单个键来存储不同的值。

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

4

3 回答 3

7

您可能想要multimap而不是map.

于 2012-06-01T05:12:41.837 回答
6

如果您想将多个值与单个键关联,请使用std::multimap(or std::unordered_multimap) 而不是std::map.

在某些情况下,有一个代替是有意义的std::map<key_type, std::vector<mapped_type> >(就我个人而言,我经常觉得这更可取)。

于 2012-06-01T05:12:52.717 回答
4

如果要使用相同的键存储多个项目,则应使用 a 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 个不同的值。

于 2012-06-01T05:14:05.930 回答