-1
Я хочу сортировать в порядке возрастания в соответствии с первым элементом внутренней пары, то есть 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;
}
DR; кода, но вы просто используете 'std :: sort' с вашим вектором,' std :: pair 'сравниваются по лексикографии, чтобы вы получили желаемое поведение. – 101010
Если бы вы обратили внимание на предупреждения компилятора, вы заметили бы, что функция 'func' должна возвращать' bool', но ничего не возвращает (т. Е. Вам не хватает инструкции 'return'). Кроме того, 'func', как только вы добавляете' return', сортируется в порядке убывания. – Praetorian
@ 101010 Он не хочет лексикографического упорядочивания '' '' '' '' Я хочу сортировать в порядке обслуживания в соответствии с первым элементом внутренней пары * – Praetorian