C++ 如何对包含对的向量进行排序
我想根据内部对的第一个元素按升序排序,在本例中是C++ 如何对包含对的向量进行排序,c++,vector,C++,Vector,我想根据内部对的第一个元素按升序排序,在本例中是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> &
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;
}
#包括
#包括
#包括
使用名称空间std;
布尔函数(常数对&i、常数对&j)
{
i、 第二。第一>n;
而(n--)
{
cin>>a>>b>>c;
pi=配对(a,b);
po=配对(c,pi);
v、 推回(po);
}
您是否忘记了函数中的return语句
bool func(const pair<int,pair<int,int> >&i , const pair<int,pair<int,int> >&j )
{
i.second.first < j.second.first ;
}
DR;code但是,您只需将std::sort
与向量一起使用,std::pair
s会按字典顺序进行比较,这样您就可以获得所需的行为。如果您注意到编译器警告,您会注意到它说您的func
函数应该返回bool
,但不会返回任何内容(即,您缺少一条返回
语句)。此外,func
,一旦添加return
,将按降序排序。@101010他不希望对的字典顺序
s-我想根据内部对的第一个元素按顺序排序。为了检查逻辑是否正确,您创建了许多具有不同输入的测试用例,并检查函数输出如预期的那样。@Praetorian感谢我承认我没有阅读问题的主体。
bool func(const pair<int,pair<int,int> >&i , const pair<int,pair<int,int> >&j )
{
return i.second.first < j.second.first ;
}
#include <utility>