日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++sort函数使用总结

發(fā)布時間:2025/3/17 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++sort函数使用总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

頭文件:algorithm

對于(整數(shù)/字符)數(shù)組進行比較時,可直接通過sort(a,a+n)或sort(a.begin(),a.end())進行排序,默認升序排列,須要高速實現(xiàn)降序時,有三種方案

1.反轉(zhuǎn)升序數(shù)組(reserve函數(shù))

2.反向迭代sort(a.rend(),a.rbegin())

3.借助C++庫函數(shù),greater<類型>()降序 ? ? ? less<類型>()升序 ? ? 頭文件:functional


當對結(jié)構(gòu)體進行排序時,須要自己寫比較函數(shù),曾了解qsort的都知道,C中的qsort排序函數(shù)寫起來比較麻煩,由于傳入的類型是const void * ,函數(shù)內(nèi)部還須要進行強制轉(zhuǎn)換,而sort僅僅需正常傳入數(shù)據(jù)進行比較就可以。

eg:

#include<iostream> #include<cstdlib> #include<ctime> #include<algorithm> #include<functional> #include<string> using namespace std;typedef struct node{int x,y,z; }node; node s[10];\ int cmp(node a,node b) { if(a.x!=b.x)return a.x<b.x; else if(a.y!=b.y)return a.y<b.y; else return a.z<b.z; } int main() {srand((unsigned)time(NULL));for(int i=0;i<10;i++){s[i].x=rand()%5;s[i].y=rand()%10;s[i].z=rand()%20;}for(i=0;i<10;i++){cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";}sort(s,s+10,cmp);cout<<"\n\n";for(i=0;i<10;i++){cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";}return 0; }這里進行了結(jié)構(gòu)體的多級排序。

當對字符串數(shù)組進行排序時,能夠利用C中的strcmp返回自己定義函數(shù)結(jié)果。

對于String,其能夠如同數(shù)組一樣使用,但不能利用C字符串函數(shù),可使用C++標準庫字符串函數(shù)。

除了,結(jié)構(gòu)體,字符串數(shù)組,sort函數(shù)都能夠利用C++標準函數(shù)實現(xiàn)高速排序,包含pair,vector等類型,未來掌握的更加完好了再繼續(xù)本文總結(jié)。

補:

當我們從0到n-1向數(shù)組中輸入數(shù)據(jù)時,排序時sort(a,a+n),當我們須要對當中的部分排序時,僅僅須要sort(a+x,a+n),x>=0(0時是全排序)排序后的結(jié)果將以a+x為起點存入。

當我們從1到n向數(shù)組中輸入數(shù)據(jù)時,排序時sort(a+1,a+n+1),當我們須要對當中的部分排序時,僅僅須要sort(a+x,a+n+1),x>=1,排序后的結(jié)果將以a+x為起點存入。

總結(jié)

以上是生活随笔為你收集整理的C++sort函数使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。