sort用法
Sort(start,end,cmp)
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
参数 [5]
(1)start表示要排序数组的起始地址;迭代器的起始位置,对于数组来说就是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。
(2)end表示数组结束地址的下一位;迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。
(3)cmp用于规定排序的方法,可不填,默认升序。迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。
以下为使用的模板题
#include<bits/stdc++.h>
using namespace std;
int T,n;
struct node{
int x,y;
}a[100005];
bool cmp(node x,node y){
return x.x+x.y<y.x+y.y;
}
signed main(){
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
cout<<a[i].x<<" "<<a[i].y<<" ";
cout<<endl;
}
return 0;
}
此外sort还有排列动态数组的用法
bool cmp(int a[],int b[])
{
if(a[0] != b[0]) return a[0] > b[0];
if(a[1] != b[1]) return a[1] > b[1];
if(a[2] != b[2]) return a[2] > b[2];
}
int main()
{
int a[6] = {1, 1, 1, 2, 2, 3}; //储存re[i][0]
int b[6] = {4, 4, 3, 9, 5, 9}; //储存re[i][1]
int c[6] = {3, 7, 5, 4, 8, 6}; //储存re[i][2]
int i;
int **re = new int*[6]; //动态创建二维数组
for (i = 0; i < 6; ++i)
{
re[i] = new int[3];
re[i][0] = a[i];
re[i][1] = b[i];
re[i][2] = c[i];
}
sort(re, re + 6, cmp); //排序后输出
for(i = 0; i < 6; ++i)
cout << re[i][0] << ' ' << re[i][1] << ' ' << re[i][2] << endl;
return 0;
}``````
标签:sort,int,980,Codeforces,re,地址,数组,Div,cmp
From: https://www.cnblogs.com/kaltists/p/18493736