最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C++ sort函數(shù)的cmp參數(shù)

 更新時間:2021年09月08日 10:20:09   作者:異想之旅  
這篇文章主要介紹了C++ sort函數(shù)的cmp參數(shù),以升降排序個結(jié)構(gòu)體的排序展開的話題,感興趣的小伙伴可以參考下面文章內(nèi)容

前言:

學(xué)算法的第一天你在學(xué)冒泡、桶排

在你還沒搞明白快排和歸并的時候

你已經(jīng)學(xué)到了數(shù)據(jù)結(jié)構(gòu)最后的堆排序和希爾排序

可以說排序是很多競賽生的噩夢……

于是它誕生了

void std::sort()

Sort the elements of a sequence using a predicate for comparison.

參數(shù):
__first – An iterator.
__last – Another iterator.
__comp – A comparison functor.

針對一個地址區(qū)間完成排序,算法每次自動選擇,以快排為主

C++需要頭文件#include <algorithm> (當(dāng)然萬能頭我也沒意見)

1、升序排序

最簡單的就是用它完成int類型升序排序

Copy Line-numbers language-cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int a[5] = {2, 1, 3, 5, 4};
    sort(a, a + 5);
    for (int i = 0; i < 5; i++) cout << a[i] << " ";
}


輸出如下,很簡單

1 2 3 4 5

這里傳入給sort的參數(shù) a a + 5 都是地址,和大多數(shù)編程語言一樣,這里遵循左閉右開原則,即函數(shù)實際會讀取和操作的五個地址如下:

a + 0
a + 1
a + 2
a + 3
a + 4

2、降序排序

如果需要降序排序,程序如下

#include <iostream>
#include <algorithm>
using namespace std;

bool cmp(int x, int y){
    return x > y;
}

int main() {
    int a[5] = {2, 1, 3, 5, 4};
    sort(a, a + 5, cmp);
    for (int i = 0; i < 5; i++) cout << a[i] << " ";
}

輸出:

5 4 3 2 1

我們多寫了一個bool類型的cmp函數(shù),并將其地址作為第3個參數(shù)傳給了sort

cmp可以替換其內(nèi)置的函數(shù)來判斷究竟該讓哪些元素在前哪些元素在后

很多小伙伴可能有個疑惑:如何從實質(zhì)上理解cmp函數(shù),或者說我究竟該怎么記住cmp怎么寫呢?

我們來看這三個點:

  • 毋庸置疑,cmp函數(shù)返回bool類型,表示當(dāng)前排序是否正確(具體見3)
  • cmp函數(shù)應(yīng)接受兩個參數(shù),類型與要排序的數(shù)組相同(可以是int、short和long long這些常見類型,當(dāng)然也可以是結(jié)構(gòu)體)
  • cmp返回值的實際意義是傳入a、b兩個參數(shù),a在前b在后的排序是否是正確的,若是正確的返回1(true),否則返回0(false)

那么我們再看一個結(jié)構(gòu)體的排序?qū)嵗?/p>

3、結(jié)構(gòu)體的排序?qū)嵗?/h2>

結(jié)構(gòu)體的排序?qū)嵗狠斎?0個學(xué)生的名字和成績,按照成績從高到低排序后輸出

輸入數(shù)據(jù):

Yixiangzhilv 90
Mydr 60
Xiaoming 10
Mr.Glass 60
GZN 80
Wangzi 85
Hyx 100
Wyx 99
Xth 0
Zz 75

程序?qū)崿F(xiàn)如下:

#include <algorithm>
#include <iostream>
using namespace std;

struct node {
    string name;
    int score;
};

bool cmp(struct node x, struct node y) {
    return x.score > y.score;
}

int main() {
    struct node a[10];
    for (int i = 0; i < 10; i++) cin >> a[i].name >> a[i].score;
    sort(a, a + 10, cmp);
    for (int i = 0; i < 10; i++) cout << a[i].name << " " << a[i].score << endl;
}

(此處還有一個C++知識:如果已經(jīng)定義結(jié)構(gòu)體node,那么 struct node a[10]; 和 node a[10]; 都是合法的)

以上就是詳解C++ sort函數(shù)的cmp參數(shù)的詳細內(nèi)容,更多關(guān)于C++ sort函數(shù)的cmp參數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章,希望大家以后多多支持腳本之家

相關(guān)文章

  • (C和指針) #if 0/#if 1...#end if

    (C和指針) #if 0/#if 1...#end if

    #if 0還有一個重要的用途就是用來當(dāng)成注釋,如果你想要注釋的程序很長,這個時候#if 0是最好的,保證不會犯錯誤
    2013-09-09
  • C語言用遞歸函數(shù)對素數(shù)進行判斷流程

    C語言用遞歸函數(shù)對素數(shù)進行判斷流程

    素數(shù)判斷是編程語言學(xué)習(xí)過程中一個老生常談的話題,而它的實現(xiàn)也有多種算法,包括經(jīng)典的試除法(以及試除法的幾種優(yōu)化),進階的素數(shù)表篩選法,埃拉托斯特尼篩法和歐拉篩法(以及它們的優(yōu)化)等。對以上算法感興趣的朋友們,不妨搜索“素數(shù)判斷的N種境界”來學(xué)習(xí)了解
    2022-09-09
  • C++數(shù)組的定義詳情

    C++數(shù)組的定義詳情

    這篇文章主要介紹了C++數(shù)組的定義詳情,上一篇文章我們學(xué)習(xí)了類型,接下倆我們九在類型的基礎(chǔ)上展開本篇內(nèi)容數(shù)組的常用方法以及C++標(biāo)準(zhǔn)庫提供的一些關(guān)于數(shù)組的容器,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • C++中std::thread線程用法

    C++中std::thread線程用法

    本文主要介紹了C++中std::thread線程用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 深入探討Linux靜態(tài)庫與動態(tài)庫的詳解(一看就懂)

    深入探討Linux靜態(tài)庫與動態(tài)庫的詳解(一看就懂)

    本篇文章是對Linux靜態(tài)庫與動態(tài)庫進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • QT5多窗口跳轉(zhuǎn)實現(xiàn)步驟詳解

    QT5多窗口跳轉(zhuǎn)實現(xiàn)步驟詳解

    這篇文章主要介紹了使用Qt5實現(xiàn)多窗口界面跳轉(zhuǎn)的過程,包括創(chuàng)建多個UI界面、設(shè)計按鈕連接槽函數(shù)以及實現(xiàn)界面之間的導(dǎo)航,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • C語言實現(xiàn)簡易的掃雷小游戲

    C語言實現(xiàn)簡易的掃雷小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易的掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Cocos2d-x人物動作類實例

    Cocos2d-x人物動作類實例

    這篇文章主要介紹了Cocos2d-x人物動作類實例,本文用大量代碼和圖片講解Cocos2d-x中的動作,代碼中同時包含大量注釋說明,需要的朋友可以參考下
    2014-09-09
  • 淺談c語言中一種典型的排列組合算法

    淺談c語言中一種典型的排列組合算法

    下面小編就為大家?guī)硪黄獪\談c語言中一種典型的排列組合算法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++ 實現(xiàn)輸入含空格的字符串

    C++ 實現(xiàn)輸入含空格的字符串

    這篇文章主要介紹了C++ 實現(xiàn)輸入含空格的字符串,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

雅江县| 广州市| 鄂伦春自治旗| 泗洪县| 岗巴县| 保亭| 湟源县| 安岳县| 当雄县| 德格县| 罗田县| 沽源县| 安阳县| 黔东| 萍乡市| 克山县| 彩票| 平江县| 万全县| 贵港市| 北辰区| 渑池县| 德钦县| 长兴县| 纳雍县| 永善县| 隆化县| 赤城县| 呼玛县| 抚顺市| 拜城县| 龙里县| 雷山县| 安溪县| 宕昌县| 米泉市| 静宁县| 新巴尔虎右旗| 沂水县| 太湖县| 金秀|