【发布时间】:2015-12-24 01:48:12
【问题描述】:
我正在尝试通过为它编写一个比较函数来使用标准排序函数对其中包含一组对的多图进行排序,但我遇到了一些错误。我正在尝试使用值对地图进行排序,然后再次使用键对其进行排序。比较功能导致一些错误。你能指出我哪里出了问题。
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
bool cmp(const pair<int,int>& a, const pair<int,int>& b)
{
return a.second < b.second;
}
int main() {
// multimap of int ssId, int phone numbers
multimap <int, int> m;
m.insert(make_pair(1, 8));
m.insert(make_pair(1, 5));
m.insert(make_pair(2, 4));
m.insert(make_pair(2, 3));
m.insert(make_pair(3, 1));
sort(m.begin(), m.end(), cmp);
return 0;
}
输出应该是这样的:
1 5
1 8
2 3
2 4
3 1
【问题讨论】:
-
1)
std::multimap仅按其键排序,构建后无法重新排序。 2) 无论如何你都不能使用std::sort,因为它需要随机访问迭代器,而std::multimap只提供双向迭代器。
标签: c++ algorithm sorting dictionary multimap