我試圖打印出五個最常用的值。但是,當我將地圖更改爲多地圖時,我打破了向地圖添加值的代碼。我如何將值添加到多圖?它可以以類似的方式完成,因爲我將值添加到地圖中?將值添加到std :: multimap
// 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;
您可能感興趣的Boost.Bimap。 –
multimaps不支持通過operator []'進行訪問,所以您的'hexmap [colors [i]] ++'行無效。你有把'hexmap'變成多圖的原因嗎?它似乎可以保留爲常規地圖。 – Alec
@alecbenzer是的,我想從hexmap recive五個最高值,並有不止一個具有相同的映射值。 – user2520739