映射中的两个键值可以相同吗?
Can two Key Values be same in a Map
我定义了一个地图
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::tuple
或boost::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 个不同值的条目。
相关文章:
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 如何在for循环中包含两个索引值的测试条件
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- C++递归来决定数组中的两个值
- 在C++中查找两个向量之间最相似的值
- 在多图中找到一个键的两个最大值
- 如何通过键和值以及在C 中的结果映射中比较两个地图?我们有任何STL API吗?
- 当键是两个整数时,C 地图或unordered_map
- SORT(),vector<pair<int,int> >严格基于键值,即使两个键值相同
- 同时对两个向量(键/值)进行排序的最快方法
- 合并两个映射,对C++中相同键的值求和
- 用特征3插值两个矩阵
- 映射中的两个键值可以相同吗?
- 相同的键盘键充当两个相反操作的快捷方式
- 在多映射中,当两个迭代器持有具有映射到不同Value的相同键的值时.我们如何才能在地图上找到它们中的哪一个在另一个之前
- 键上的两个映射相交,保留第一个映射的值
- 映射一个键两个值
- 带有两个不同值的键的c++映射
- 当两个键(对)可能不包含两个值时,如何将两个键映射到一个键