将值添加到std :: multimap

时间:2013-12-15 18:24:23

标签: c++ 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;

2 个答案:

答案 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应该是必需的