如何在c ++中的地图中找到具有相同键的值的总数?

时间:2015-12-09 16:27:01

标签: c++11 dictionary stl

A [3] = 4; A [8] = 9; A [3] = 10; A [6] = 7; A [3] = 78;

例如......在这里,如何用键打印总值为3?

4 个答案:

答案 0 :(得分:0)

由于地图中的每个键都是唯一的,因此答案为0

答案 1 :(得分:0)

无法为同一个密钥存储多个值。如果你想拥有多个值,你应该使用map<整型,矢量< int>>并迭代你的密钥的每个值。

答案 2 :(得分:0)

由于地图只能使用特定键保存单个值,因此答案始终为0(键不在地图中)或1(键在地图中)。 find可以为您找到它:

typedef std::map<int, Foo> Map;

// untested code :-)
int numWithValue (const Map &mp, int val) {
    return mp.find(val) != mp.end() ? 1 : 0;
}

如果您想使用相同的密钥存储多个值,那么multimap可能是适合您的正确数据结构。

答案 3 :(得分:0)

如果需要为同一个键存储多个值,可以使用std :: multimap。

要知道键3有多少个值,请使用count

std::multimap<int, int> A = { { 3, 4 }, { 8, 9 }, { 3, 10 }, { 6, 7 }, { 3, 78 } }; A.count(3);