我想根据内部对的第一个元素按升序排序,即在这种情况下为a
。但它根本没有排序。我不确定我的函数func
逻辑是否正确。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool func(const pair<int,pair<int,int> >&i , const pair<int,pair<int,int> >&j )
{
i.second.first < j.second.first ;
}
int main()
{
vector<pair<int,pair<int,int> > > v;
pair<int,int> pi;
pair<int,pair<int,int> > po;
int n,a,b,c,i;
cin>>n;
while(n--)
{
cin>>a>>b>>c;
pi=make_pair(a,b);
po=make_pair(c,pi);
v.push_back(po);
}
cout<<endl;
for(i=0;i<v.size();i++)
{
cout<<v[i].second.first<<" "<<v[i].second.second<<" "<<v[i].first<<endl;
}
sort(v.begin(),v.end(),func);
cout<<endl;
for(i=0;i<v.size();i++)
{
cout<<v[i].second.first<<" "<<v[i].second.second<<" "<<v[i].first<<endl;
}
return 0;
}
答案 0 :(得分:0)
您忘记了函数
中的return语句bool func(const pair<int,pair<int,int> >&i , const pair<int,pair<int,int> >&j )
{
i.second.first < j.second.first ;
}
改为写
bool func(const pair<int,pair<int,int> >&i , const pair<int,pair<int,int> >&j )
{
return i.second.first < j.second.first ;
}
此外,您应该包含标头<utility>
,其中定义了类std::pair
#include <utility>