我正在尝试打印出五个最常用的值。但是当我将地图更改为多图时,我打破了我向地图添加值的代码。如何将值添加到多图?它可以用与向地图添加值类似的方式完成吗?
// Create a map for keeping track of how many occurences of the different colors
multimap<string, int> hexmap;
// Add the hex values to the map
for(int i = 0; i < imagesize; i ++)
{
hexmap[colors[i]]++;
}
typedef std::multimap<int, string> Mymap;
Mymap dst;
std::transform(hexmap.begin(), hexmap.end(),
std::inserter(dst, dst.begin()),
[](const std::pair<string,int> &p )
{
return std::pair<int, string>(p.second, p.first);
}
);
Mymap::iterator st = dst.begin(),it;
size_t count = 5;
for(it = st; ( it != dst.end() ) && ( --count ); ++it)
std::cout << it->second << it->first << endl;
答案 0 :(得分:1)
您使用std::multimap<K, V>
或insert()
向emplace()
添加元素,例如:
std::multimap<std::string, int> map;
map.insert(std::make_pair("hello" , 1));
map.insert({ "world", 0 });
map.emplace("hello", 0);
您使用std::multimap<K, V>
成员在find()
中找到对象,例如:
std::multimap<std::string, int>::iterator it = map.find("hello");
答案 1 :(得分:0)
“我正在尝试打印出五个最常用的值。”
在这种情况下,您不必使用hexmap
作为std::multimap
只需std::map
即可完成工作
但std::multimap
dst
应该是必需的