我有这个多图,用于将字符串的汉明距离映射到相应的字符串。
由于两个字符串的汉明距离可能相同,我希望它们按升序排序。但是,当我打印出来时,它没有排序。 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;
}
答案 0 :(得分:4)
多图中的元素按键排序(在本例中为无符号汉明距离)。具有相同键的元素不按值(在本例中为字符串)排序,它们通常按插入顺序保存。
答案 1 :(得分:0)
较少的模板功能不是必需的,因为它是默认值。尝试在不使用以下情况下声明检查:
typedef multimap<unsigned, string> Check;
编辑:执行此操作的最佳方法是生成哈希键作为* key_type *,而值类型可以是std::pair<unsigned, string>
答案 2 :(得分:0)
使用std::multimap
无法做到这一点,因为在比较密钥时,不知道它们代表哪个值。
答案 3 :(得分:0)
multimap
仅按其键(长度)排序,而不是按值(字符串)排序。在这种情况下,我怀疑你最好的方法是std::map<unsigned, std::set<std::string> >
。您也可以使用std::set<std::pair<unsigned, std::string> >
,但搜索会要求您构建虚拟pair
以进行搜索。