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::pair2つのキー値を等しくすることができます(私は正しいと思います)...それぞれの場合のブール値は何になりますか、最初の場合はTRUE、2回目はFALSE、またはその逆ですか?

また、単一のキーを使用してさまざまな値を格納できる場所についてstd::tupleも聞いたことがあります。boost::tuple

それらを反復処理する方法についてはあまり明確ではありません...助けが必要です

4

3 に答える 3

7

multimapの代わりに必要な場合がありmapます。

于 2012-06-01T05:12:41.837 に答える
6

複数の値を1つのキーに関連付ける場合は、の代わりにstd::multimap(または)を使用します。std::unordered_multimapstd::map

場合によっては、std::map<key_type, std::vector<mapped_type> >代わりに使用することが理にかなっている場合があります(個人的には、これが望ましいと思うことがよくあります)。

于 2012-06-01T05:12:52.717 に答える
4

同じキーで複数のアイテムを保存する場合は、を使用する必要があります(バリアントmultimapにも適用されます)。unordered_

以下が機能するはずです。

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

また、マルチマップには、キー「helloworld」と10個の異なる値を持つ10個のエントリが含まれている必要があります。

于 2012-06-01T05:14:05.930 に答える