#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct myclass
{
bool operator()(pair<int,int> &left, pair<int,int> &right)
{
return (left.first < right.first);
}
} x;
int main()
{
int i;
vector<pair<int,int> > a;
a.push_back(make_pair(1,2));
a.push_back(make_pair(1,0));
a.push_back(make_pair(2,2));
a.push_back(make_pair(2,1));
a.push_back(make_pair(3,2));
a.push_back(make_pair(1,5));
sort(a.begin(),a.end(),x);
for(i=0;i<6;i++)
{
printf("%d %d\n",a[i].first,a[i].second);
}
return 0;
}
我的代码排序第一个元素对的矢量有什么问题? 它在'x'之前给出了[Error]期望的primary-expression。
答案 0 :(得分:1)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using IntPair = pair<int, int>;
int main()
{
vector<IntPair> a = {
make_pair(1,2),
make_pair(1,0),
make_pair(2,2),
make_pair(2,1),
make_pair(3,2),
make_pair(1,5)
};
sort(a.begin(), a.end(), [](const IntPair &left, const IntPair &right)
{
return (left.first < right.first);
});
for(auto const & i : a)
{
cout << i.first << ' ' << i.second << '\n';
}
}
您不需要已定义的类,也不需要全局变量x
。使用现代C ++,您不必明确定义functionoid或functor,只需使用lambda。