qvector 结构体排序_C++结构体的应用_YCOJ
結構體是一種自定義的東西,用struct來定義。在他里面,
可以裝許多東西,比如int,string,char,bool等等等等。
如:
struct a{
string name;
int a;
int b;
};
……
a s;
cin >> s.name;
代碼示范:
例題:
身高排序
Description
有 n 個同學排成一排,從左到右依次編號為 1~n。
現在給出了這個 n 位同學的身高,但是并不是按照高矮排序的。現在這些同學需要按照身高從矮到高的順序重新排列,矮的同學在左邊,高的同學在右邊。如果兩個同學身高相同,那么這兩個同學的相對順序不應該發生變化。
請你輸出排序以后從左到右同學的編號。
Input
輸入一個行一個整數 n(1≤n≤1000)。
接下來一行輸入 n 個整數,依次表示從左到右的同學的身高,每個同學身高小于等于 300。
Output
一行輸出 n 個整數,兩個數中間用空格隔開,行末不要有多余空格。
表示重新排列以后從左到右的同學的編號。
Sample Input 1
5
156 178 145 190 156
Sample Output 1
3 1 5 2 4
解題代碼:
cpp
#include<iostream>
#include<algorithm>
using namespace std;
struct student{
int h;
int name;//name=編號
};//定義結構體
bool cmp(student x,student y){
return x.h<y.h;
}//排序函數
int main(){
int n,b=0;
cin >>n;//人數
student a[n];//定義student變量a
for (int i=0;i<n;i++){
b++;
a[i].name=b;
}
for (int i=0;i<n;i++){
cin >>a[i].h;
}
stable_sort(a,a+n,cmp);//更穩定的sort排序
for(int i=0;i<=n-2;i++){
cout << a[i].name<<" ";//為了去末尾空格,最后一個單獨輸出
}
cout << a[n-1].name;//輸出最后一個
return 0;
}
注:結構體排序需要寫一個排序函數。
這就是結構體。
標準結尾:
總結
以上是生活随笔為你收集整理的qvector 结构体排序_C++结构体的应用_YCOJ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android double精度_And
- 下一篇: 本地共享映射文件夹进行删除操作_从集群建