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

首頁 > 編程 > C > 正文

淺析stl序列容器(map和set)的仿函數排序

2020-01-26 15:49:54
字體:
來源:轉載
供稿:網友

問題:set是一個自動有序的集合容器,這是set的一個最實惠的性質,從小到大,只要你插入進去,就有序了。但是,如果你不想要這個順序呢,是不是可以人為控制set容器
的元素順序呢?答案是,可以的,因為stl也是程序員設計的。

首先看stl的模板構造函數

復制代碼 代碼如下:

explicit set ( const Compare& comp = Compare(), const Allocator& = Allocator() );
template
set ( InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator() );
set ( const set& x );

我們完全可以重定義set的構造函數里的比較函數,完成對set的自排序功能。

舉例:

復制代碼 代碼如下:

bool fncomp (int lhs, int rhs) {return lhs
struct classcomp {
bool operator() (const int& lhs, const int& rhs) const
{return lhs>rhs;} // 控制set逆序
};

void testset()
{
// 第一種使用方法
bool(*fn_pt)(int,int) = fncomp;
set sixth (fn_pt);
// 第二中使用方法
set s;                 // class as Compare
s.insert(4);
s.insert(5);
set::iterator it;
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<" ";
}
cout <<endl;
};


注意:如果set元素是一個結構體,你最好要設置你的仿函數,不然set一般默認是按第一個字段排序的,而我們的實際情況是想按序號i排序:
復制代碼 代碼如下:

struct ST_Message
{
public:
ST_Message(int seq, int64_t time, string strfrom, string strto, string strinfo){
this->seq=seq;this->time=time;this->strfrom=strfrom;this->strto=strto;this->strinfo=strinfo;}

int seq;
int64_t time;
string strfrom;
string strto;
string strinfo;

bool operator <(const ST_Message& other) const // 注意是const函數
{
if (seq != other.seq) // dtime按升序排序
{
return (seq < other.seq);
}
else if(time < other.time)
{
return (time < other.time);
}
else if(strcmp(strfrom.c_str(), other.strfrom.c_str()) != 0)
{
return (strcmp(strfrom.c_str(), other.strfrom.c_str()) < 0);
}
else if(strcmp(strto.c_str(), other.strto.c_str()) != 0)
{
return (strcmp(strto.c_str(), other.strto.c_str()) < 0);
}
else
{
return (strcmp(strinfo.c_str(), other.strinfo.c_str()) < 0);
}
}
};


stl中自動有序的容器map也和set有相同的應用,如果你想快速理解,那么把這篇文章中的set改成map就差不多了。

總之,有序的stl容器在工程中應用什么方便和廣泛,但是當我們需要自己的排序的時候,可以用仿函數來設置它!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
俺去亚洲欧洲欧美日韩| 日本精品免费一区二区三区| 91在线直播亚洲| 日本一区二区在线播放| 久久精品久久久久久国产 免费| 日韩福利在线播放| 欧美激情极品视频| 国产精品视频网| 91久久精品日日躁夜夜躁国产| 亚洲精选在线观看| 91av在线看| 成人性生交大片免费看小说| www.午夜精品| 欧美成人三级视频网站| 欧美尤物巨大精品爽| 国产精品久久久久久五月尺| 97国产真实伦对白精彩视频8| 久久影视电视剧凤归四时歌| 国产精品揄拍一区二区| 欧美天堂在线观看| 国产精品视频自拍| 懂色av一区二区三区| 日韩亚洲欧美中文高清在线| 高跟丝袜一区二区三区| 久久久久久久电影一区| 91久热免费在线视频| 一区二区三区四区视频| 日韩av中文在线| 欧美影院成年免费版| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美在线视频一二三| 日韩精品在线影院| 精品色蜜蜜精品视频在线观看| 中文字幕精品影院| 国产精品美女主播| 久久伊人精品天天| 亚洲视频一区二区三区| 国产精品www| 国产精品高清在线观看| 国产精品偷伦免费视频观看的| 97精品国产97久久久久久免费| 国产一区二区黑人欧美xxxx| 亚洲电影免费在线观看| 欧美视频不卡中文| 欧美午夜精品伦理| 欧美午夜片欧美片在线观看| 91av免费观看91av精品在线| 在线一区二区日韩| 成人免费直播live| 亚洲欧美日韩天堂一区二区| 亚洲国产精品高清久久久| 国产高清视频一区三区| 欧美日韩国产一区在线| 成人午夜黄色影院| 亚洲在线观看视频| 欧美性xxxx极品hd满灌| 亚洲欧美中文日韩在线v日本| 欧美在线视频一二三| 日韩精品小视频| 成人免费观看49www在线观看| 久久精品国产v日韩v亚洲| www.久久久久久.com| 色综合久久精品亚洲国产| 欧美综合一区第一页| 日韩视频免费在线观看| 国产区精品视频| 欧美在线一级va免费观看| 久久人人爽人人爽爽久久| 日韩激情第一页| 欧美精品videossex88| 孩xxxx性bbbb欧美| 夜夜嗨av色一区二区不卡| 欧美大胆在线视频| 97在线免费视频| 国产成人一区二| 亚洲视频在线观看网站| 亚洲精品自拍视频| 午夜精品免费视频| 国产成人亚洲综合91精品| 久久久国产在线视频| 欧美激情在线狂野欧美精品| 91久久久久久久| 91在线免费看网站| 亚洲国产高清福利视频| 伊人精品在线观看| 国产视频亚洲视频| 亚洲国产欧美一区二区三区久久| 日韩中文字幕免费看| 一本一道久久a久久精品逆3p| 性色av一区二区三区在线观看| 欧美亚洲在线播放| 不用播放器成人网| 视频在线观看99| 97人人模人人爽人人喊中文字| 亚洲第一色在线| 国产精品久久久久久久久久三级| 久久99视频精品| 日韩人在线观看| 亚洲性夜色噜噜噜7777| 久久理论片午夜琪琪电影网| 日本亚洲欧洲色| 欧美一级大片在线免费观看| 成人做爽爽免费视频| 26uuu久久噜噜噜噜| 欧美视频裸体精品| www.国产精品一二区| 欧美成在线观看| 久久天堂电影网| 懂色av一区二区三区| 91美女片黄在线观看游戏| 久久久亚洲网站| 国产精品盗摄久久久| 91天堂在线视频| 日韩不卡中文字幕| 国产噜噜噜噜噜久久久久久久久| 国产精品白丝av嫩草影院| y97精品国产97久久久久久| 欧美激情一区二区三级高清视频| 综合136福利视频在线| 日韩av在线免费看| 欧美性精品220| 亚洲精品xxx| 日韩国产高清污视频在线观看| 亚洲视频777| 亚洲欧美精品伊人久久| 亚洲小视频在线| 久久亚洲精品成人| 91亚洲va在线va天堂va国| 国产日韩在线看| 国产激情久久久久| 一区二区三区视频观看| 欧美黑人极品猛少妇色xxxxx| 欧美成人高清视频| 国产精品揄拍500视频| 91久久嫩草影院一区二区| 亚洲福利视频久久| 亚洲图中文字幕| 国产精品视频永久免费播放| 欧美大片在线免费观看| 久久久精品久久| 日韩少妇与小伙激情| 亚洲一区二区三区sesese| 欧美在线国产精品| 欧美在线观看网址综合| 亚洲第一色中文字幕| 欧美日本亚洲视频| 懂色av中文一区二区三区天美| 国产成人精品日本亚洲专区61| 国产免费一区视频观看免费| 国产精品电影一区| 久久视频在线看| 亚洲国产精彩中文乱码av在线播放| 成人啪啪免费看| 国产精品夜间视频香蕉| 亲爱的老师9免费观看全集电视剧| 久久精品国产一区| 欧美日韩国产一区二区| 久久久91精品国产一区不卡| 国产日韩在线精品av| 国产亚洲成av人片在线观看桃| 91超碰中文字幕久久精品| 欧美在线视频一二三| 亚洲电影成人av99爱色| 国产精品视频中文字幕91|