亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 關于STL中sort()對struct排序

2020-02-24 14:32:48
字體:
來源:轉載
供稿:網友

  一直沒有系統去看過c++,因為懂得一些c的基本語法,在實際編程中用到c++,只能用到哪些看哪些,發現這樣雖然能夠完成大部分工作,但是有時候效率實在太低,比如說這節要講的Std::sort()函數的使用,調了半天才調通。開通c/c++序列博客是記錄在使用c++中一些難題,避免以后重犯錯,當然以后會盡量擠出時間來較系統學習下c++。

  開發環境:QtCreator2.5.1+OpenCV2.4.3

  實驗基礎

  首先來看看std中的快速排序算法sort的使用方法:

  template <class RandomAccessIterator, class Compare>?void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

  這是一個帶模板的函數,參數1和2表示需要排序的元素在隨機迭代器的起始位置和結束位置,其迭代器指向的數據類型可以自己定義,常見的數據類型包括結構體,vector,類等都可以被使用。參數comp是用來決定所采用的排序是升序還是逆序的,默認情況下是升序排列。但是這種默認情況的優勢是處理迭代器指向的元素為普通的數據類型,比如說整型,字符型等。如果指向的數據類型為類或者結構體,然后使用該類或者結構體中的某個元素進行排序,這時候需要自己定義排序的重載符號”<”。比如說在本次實驗中該重載符號的定義為:

?
?

/*按照降序排列*/
bool compare(const PAIR &x, const PAIR &y)
{
??? return x.point_value > y.point_value;
}

  如果將comp定義為一個函數(網上好像很多都是用這種類似的函數),比如說該函數如下:
?

/*按照降序排列*/
bool operator<(const PAIR &x, const PAIR &y)
{
??? return x.point_value > y.point_value;
}

  則會報錯如下錯誤:

  

  std::sort因為函數參數不明確,所以無法推導出模板參數等.

?

  實驗結果

  本次實驗是基于這樣一個問題的:有一些坐標點集合(2d的坐標點,坐標點之間沒有重復),每個坐標點對應一個數,現在需要對這些數排序從而達到對這些坐標點排序。有嘗試過把點的坐標和它對應的值放在map中,然后對map中的元素用std::sort()進行排序,但是由于開始沒有發現那個重載符號的使用,所以沒有調試成功?,F在直接不用map了,而是用vector,vector里面放的是帶有坐標點和其對應值的struct。

  本次實驗是在vector中存入3個結構體對象,每個結構體中放入一個二維點和它對應的值,然后采用sort()對齊排序,排序結果如下:

  

  實驗代碼及注釋

  main.cpp:

?

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

?

using namespace std;
using namespace cv;

typedef struct
{
??? cv::Point point;
??? long point_value;
} PAIR;

/*按照降序排列*/
bool operator<(const PAIR &x, const PAIR &y)
{
??? return x.point_value > y.point_value;
}

///*按照降序排列*/
//bool compare(const PAIR &x, const PAIR &y)
//{
//??? return x.point_value > y.point_value;
//}

void main()
{
??? PAIR pair1, pair2, pair3;
??? std::vector<PAIR> vec;
??? pair1.point = Point(10, 20);
??? pair1.point_value = 100;
??? pair2.point = Point(70, 30);
??? pair2.point_value = 99;
??? pair3.point = Point(44, 76);
??? pair3.point_value = 101;

??? vec.push_back(pair1);
??? vec.push_back(pair2);
??? vec.push_back(pair3);
//??? std::sort(vec.begin(), vec.end(), compare);
??? std::sort(vec.begin(), vec.end());
??? cout << "排序的結果為:" << endl;
??? for(vector<PAIR>::iterator it = vec.begin(); it != vec.end(); ++it) {
??????? cout << it->point << endl;
??? }

??? return ;
}

?

  實驗總結

  std::sort()函數的功能很強大,且可以對類,結構體等元素進行排序。如果還有其他疑問,歡迎補充,有任何問題也可以與武林編輯一起討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成电影网站色xx| 久久精品国产91精品亚洲| 日韩精品中文字| 日韩欧美亚洲范冰冰与中字| 日韩免费不卡av| 亚洲色图第一页| 97婷婷涩涩精品一区| 揄拍成人国产精品视频| 亚洲最新av在线| 这里只有精品在线观看| 日韩精品在线视频观看| y97精品国产97久久久久久| 中文字幕欧美精品日韩中文字幕| 一本色道久久综合狠狠躁篇的优点| 国产ts一区二区| 亚洲国产精品久久久久| 亚洲精品动漫100p| 1769国产精品| 一区国产精品视频| 国产香蕉一区二区三区在线视频| 中国china体内裑精亚洲片| 国产日韩精品入口| 午夜精品久久久久久久99热浪潮| 中文字幕av一区二区三区谷原希美| 一本色道久久88综合日韩精品| 91精品视频网站| 亚洲无亚洲人成网站77777| 精品久久久久久久久国产字幕| 91国偷自产一区二区三区的观看方式| 51精品在线观看| 国产精品久久在线观看| 欧美成人剧情片在线观看| 久久久免费观看| 国内精品久久久久久久久| 全色精品综合影院| 欧美性受xxx| 伊人伊成久久人综合网站| 日韩欧美中文字幕在线观看| 欧美乱大交做爰xxxⅹ性3| 欧美夫妻性生活视频| 国产美女精品视频| 欧美性高潮床叫视频| 亚洲国产欧美精品| 国产精品毛片a∨一区二区三区|国| 97久久精品人搡人人玩| 日韩不卡在线观看| 91精品一区二区| 91久久在线观看| 综合激情国产一区| 日本精品视频网站| 91九色国产社区在线观看| 国产一区二区三区在线免费观看| 国产97在线播放| 国产精品久久久久免费a∨大胸| 日韩精品中文字幕有码专区| 国产精品扒开腿做爽爽爽男男| 日韩欧美国产免费播放| 欧美精品在线看| 国产精品 欧美在线| 久久亚洲成人精品| 亚洲性无码av在线| 欧美大片大片在线播放| 亚洲精品一区二区久| 日本高清不卡在线| 欧美野外猛男的大粗鳮| 欧美国产精品人人做人人爱| 久久亚洲精品毛片| 在线观看日韩av| 亚洲韩国青草视频| 97在线视频免费看| 日本精品性网站在线观看| 国产午夜精品美女视频明星a级| 国产午夜精品美女视频明星a级| 97视频在线观看网址| 韩国三级电影久久久久久| 欧美在线亚洲一区| 国产精品三级久久久久久电影| 日本成人在线视频网址| 成人国产精品久久久| 色综合久久精品亚洲国产| 国产一区二区黑人欧美xxxx| 91久久精品视频| 久久成人18免费网站| 尤物tv国产一区| 日本午夜精品理论片a级appf发布| 欧美电影在线免费观看网站| 热久久视久久精品18亚洲精品| 久久人人爽人人| 亚洲欧美国产一区二区三区| 久久精视频免费在线久久完整在线看| 91久久精品日日躁夜夜躁国产| 亚洲精品久久久久久下一站| 在线亚洲午夜片av大片| 亚洲精品欧美日韩| 亚洲美女av在线播放| 中日韩午夜理伦电影免费| 欧美巨乳美女视频| 91精品国产乱码久久久久久蜜臀| 亚洲视频国产视频| 亚洲人线精品午夜| 中文字幕日韩av电影| 国产欧美日韩最新| 亚洲性日韩精品一区二区| 国内精品久久久| 欧美日韩中文字幕在线| 久久久久久久久久久网站| 国语自产精品视频在免费| 久久久国产在线视频| 亚洲黄色在线观看| 国产经典一区二区| 亚洲影影院av| 久久久久久网址| xvideos国产精品| 国产丝袜一区二区| 久久伊人91精品综合网站| 亚洲精品电影网在线观看| 亚洲成人久久久| 亚洲精品成人网| 97视频在线播放| 国产91在线播放九色快色| 久久99国产精品久久久久久久久| 亚洲欧洲日韩国产| 久久久国产精品视频| 国产精品国产三级国产aⅴ9色| 亚洲精品久久久久| 成人久久精品视频| 性色av一区二区咪爱| 亚洲日本欧美中文幕| 欧美高清无遮挡| 欧美中文字幕在线观看| 成人免费网视频| 国产日韩精品入口| 国产精品自在线| 国产精品av网站| 九九视频这里只有精品| 中文字幕少妇一区二区三区| 精品人伦一区二区三区蜜桃免费| 国产精品福利在线| 韩国欧美亚洲国产| 久久伊人色综合| 精品少妇一区二区30p| 日韩av电影免费观看高清| 91久久久久久久| 国产成人精品av| 97精品国产97久久久久久春色| 亚洲电影免费观看高清| 97精品免费视频| 久久国产精品久久久久久| 97国产精品视频| 91色视频在线导航| 秋霞成人午夜鲁丝一区二区三区| 国外视频精品毛片| 中文字幕日韩欧美在线视频| 欧美另类69精品久久久久9999| 夜夜嗨av色综合久久久综合网| 国产精品久久久久久久久久久久| 国产精品久久久久福利| 最新的欧美黄色| 亚洲精品美女免费| 国产成人精品日本亚洲| 亚洲人午夜精品| 亚洲精品视频久久| 成人看片人aa| 国产成人精品免费久久久久|