關於STL函式庫 sort 函式

2021-10-03 18:47:13 字數 1615 閱讀 2007

sort()函式

sort()函式主要用於普通排序,速度較高(較高???),初學者適用。

sort函式簡單來講有兩種用法,一是大到小,二是小到大。sort(a,a+n)代表將陣列a的n個數(a[0]~a[n-1])進行預設的從小到大的排序。例子:

#include

using

namespace std;

const

int n=10;

int a[11]

=;intmain()

printf

("\n");

return0;

}

輸出結果:1 2 3 4 5 6 7 8 9 10

這是普通用法。那從大到小呢?沒錯,可以自定義一種排序方式,名字為cmp。

bool

cmp(

int x,

int y)

//bool函式

然後我們要想方設法把它塞進sort()裡面。

sort

(a+1

,a+n+

1,cmp/*奇特的塞了進去*/

);

什麼?怎麼又多了乙個東西?沒錯,這種方法可以讓sort()函式用我們設定的排序方式來為陣列排序。例子:

#include

using

namespace std;

const

int n=10;

int a[11]

=;bool

cmp(

int x,

int y)

intmain()

printf

("\n");

return0;

}

輸出結果:10 9 8 7 6 5 4 3 2 1

我們設有n個人,每個人有語文、數學、英語三個科目的考試成績,讓你將他們的總分從大到小排序,然後從大到小輸出總分。

我們設定乙個結構體node來表示他們三科分數和總成績

struct node

a[105]=

;

然後,我們要設定我們排序方式,因為如果不設定,sort()函式可能看不懂你這個結構體要幹什麼emm。我們定義乙個cmp,注意變數用node,不要用int

bool

cmp(node x,node y)

然後,我們程式設計序就方便多了。程式如下:

#include

using

namespace std;

int n;

struct node

a[105]=

;bool

cmp(node x,node y)

intmain()

sort

(a+1

,a+n+

1,cmp)

;for

(int i=

1;i<=n;i++

)return0;

}

非常棒!你學會了sort()函式的特殊用法!本章節你已經學完了全部知識!

STL標準函式庫 vector容器

1.vector的功能 vector包含著一系列連續儲存的元素,性質和陣列十分相似。訪問元素或者在末尾插入元素常數級別,插入元素是線性級別。要注意的是,vector的尾部元素是 vector ve vector iterator iter iter ve.end 1 這裡一定要減 cout ite ...

STL和C 標準函式庫 (三)

stl是最新的c 標準函式庫中的乙個子集,這個龐大的子集佔據了整個庫的大約80 的分量。而作為在實現stl過程中扮演關鍵角色的模板則充斥了幾乎整個c 標準函式庫。在這裡,我們有必要看一看c 標準函式庫裡包含了哪些內容,其中又有哪些是屬於標準模板庫 即stl 的。c 標準函式庫為c 程式設計師們提供了...

stl排序之sort函式

stl容器的排序,支援隨機訪問的容器vector,deque,string沒有sort成員,可呼叫std sort排序 list排序呼叫自帶的list sort。下面是std sort函式,有兩個版本 template void sort randomaccessiterator first,ran...