Multimap不排序

Xan*_*ann 5 c++ stl map multimap

我有这个多图,用于将字符串的汉明距离映射到相应的字符串.

由于两个字符串的汉明距离可能相同,我希望它们按升序排序.但是,当我打印出来时,它没有排序.hamdistArray被声明为无符号类型.

typedef multimap<unsigned, string, less<unsigned> > Check;
            Check pairs; 

            pairs.insert(Check::value_type(hamdistArray[j], d.sortedWordDatabase[j]));

            for(Check::const_iterator iter = pairs.begin(); iter != pairs.end(); ++iter)
            {
                cout << iter->first << '\t' << iter->second<< endl;
            }
Run Code Online (Sandbox Code Playgroud)

kbj*_*klu 6

多重映射中的元素按键(在本例中为无符号汉明距离)排序。具有相同键的元素不按值(在本例中为字符串)排序,它们通常按插入顺序保留。


Fel*_*llo 0

less 模板函数不是必需的,因为它是默认的。尝试将 Check 声明为不带:

typedef multimap<unsigned, string> Check;
Run Code Online (Sandbox Code Playgroud)

编辑:最好的方法是生成一个哈希键作为 *key_type* 并且值类型可以是std::pair<unsigned, string>