麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

set容器

2019-11-14 13:11:42
字體:
供稿:網(wǎng)友
平衡二叉檢索樹的檢索使用中序遍歷算法,檢索效率高于vector、deque 和list 等容器。另外,采用中序遍歷算法可將鍵值由小到大遍歷出來,所以,可以理解為平衡二叉檢索樹在插入元素時(shí),就會自動將元素按鍵值由小到大的順序排列對于 set 容器中的鍵值,不可直接去修改。因?yàn)槿绻讶萜髦械囊粋€(gè)鍵值修改了,set容器會根據(jù)新的鍵值旋轉(zhuǎn)子樹,以保持新的平衡,這樣,修改的鍵值很可能就不在原先那個(gè)位置上了。換句話來說,構(gòu)造set 集合的主要目的就是為了快速檢索。頭文件:#include <set>   創(chuàng)建對象:set<int> s;采用 insert()方法把元素插入集合中去,插入的具體規(guī)則在默認(rèn)的比較規(guī)則下,是按元素值由小到大插入,如果自己指定了比較規(guī)則函數(shù),則按自定義比較規(guī)則函數(shù)插入。使用前向迭代器對集合中序遍歷,其結(jié)果正好是元素排序的結(jié)果。#include <set>#include <iostream>using namespace std;int main(int argc, char* argv[]){//定義元素類型為int 的集合對象s,當(dāng)前沒有任何元素set<int> s;//插入了5 個(gè)元素,但由于8 有重復(fù),第二次插入的8 并沒有執(zhí)行s.insert(8);//第一次插入8,可以插入s.insert(1);s.insert(12);s.insert(6);s.insert(8);//第二次插入8,重復(fù)元素,不會插入//中序遍歷集合中的元素set<int>::iterator it;//定義前向迭代器//中序遍歷集合中的所有元素for(it=s.begin();it!=s.end();it++){cout<<*it<<" ";}cout<<endl;//回車換行return 0;}運(yùn)行結(jié)果:1 6 8 12元素的反向遍歷:使用反向迭代器 reverse_iterator 可以反向遍歷集合,輸出的結(jié)果正好是集合元素的反向排序結(jié)果。它需要用到rbegin()和rend()兩個(gè)方法,它們分別給出了反向遍歷的開始位置和結(jié)束位置。//反向遍歷集合中的元素set<int>::reverse_iterator rit;//定義反向迭代器for(rit=s.rbegin();rit!=s.rend();rit++){cout<<*rit<<" ";}元素的刪除:與插入元素的處理一樣,集合具有高效的刪除處理功能,并自動重新調(diào)整內(nèi)部的紅黑樹的平衡。刪除的對象可以是某個(gè)迭代器位置上的元素、等于某鍵值的元素、一個(gè)區(qū)間上的元素和清空集合。set<int> s;//插入了5 個(gè)元素,但由于8 有重復(fù),第二次插入的8 并沒有執(zhí)行s.insert(8);//第一次插入8,可以插入s.insert(1);s.insert(12);s.insert(6);s.insert(8);//第二次插入8,重復(fù)元素,不會插入//刪除鍵值為6 的那個(gè)元素s.erase(6);輸出:1  8 12元素的檢索 :使用 find()方法對集合進(jìn)行搜索,如果找到查找的鍵值,則返回該鍵值的迭代器位置,否則,返回集合最后一個(gè)元素后面的一個(gè)位置,即end()。set<int>::iterator it;//定義前向迭代器//查找鍵值為6 的元素it=s.find(6);if(it!=s.end())//找到cout<<*it<<endl;                     //it相當(dāng)于地址,,如果找到了,這里輸出的是元素本身自定義比較函數(shù):(1)如果元素不是結(jié)構(gòu)體,那么,可以編寫比較函數(shù)。//自定義比較函數(shù)myComp,重載“()”操作符                ,該函數(shù)使鍵值從大到小排列struct myComp{bool Operator()(const int &a,const int &b){if(a!=b)return a>b;elsereturn a>b;}};set<int,myComp>::iterator it;//定義前向迭代器for(it=s.begin();it!=s.end();it++){cout<<*it<<" ";}(2)如果元素是結(jié)構(gòu)體,那么,可以直接把比較函數(shù)寫在結(jié)構(gòu)體內(nèi)。struct Info{string name;float score;//重載“<”操作符,自定義排序規(guī)則bool operator < (const Info &a) const{//按score 由大到小排列。如果要由小到大排列,使用“>”號即可。return a.score<score;}};int main(int argc, char* argv[]){//定義元素類型為Info 結(jié)構(gòu)體的集合對象s,當(dāng)前沒有任何元素set<Info> s;//定義Info 類型的元素Info info;//插入3 個(gè)元素info.name="Jack";info.score=80.5;s.insert(info);info.name="Tomi";info.score=20.5;s.insert(info);info.name="Nacy";info.score=60.5;s.insert(info);set<Info>::iterator it;//定義前向迭代器for(it=s.begin();it!=s.end();it++){cout<<(*it).name<<" : "<<(*it).score<<endl;}return 0;}運(yùn)行:Jack : 80.5Nacy : 60.5Tomi : 20.5
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 在线观看va | 欧美日韩手机在线观看 | 牛牛a级毛片在线播放 | 亚洲精品7777xxxx青睐 | 91美女视频在线 | 免费毛片免费看 | 午夜精品视频免费观看 | 成人在线观看地址 | 精品国产观看 | 午夜精品福利在线观看 | 日本成年免费网站 | 影视免费观看 | 国产精品久久久久久久午夜片 | 国产又粗又爽又深的免费视频 | 亚洲片在线观看 | 精品国产一区二区三区久久久狼牙 | 免费亚洲视频在线观看 | 99最新网址 | 日韩美香港a一级毛片免费 欧美一级淫片007 | 日韩视频高清 | 草草久久久| 一区二区免费看 | 最近中文字幕一区二区 | 99爱国产精品 | 欧美1—12sexvideos | 91av日韩 | 国产91精品一区二区麻豆亚洲 | 国产a级片电影 | av之家在线观看 | 国产精品1区2区在线观看 | 日产精品久久久一区二区开放时间 | 亚洲欧美国产视频 | 成人做爽爽爽爽免费国产软件 | 欧美乱码精品一区 | chinese-xvideos| 玩偶姐姐 在线观看 | 中文字幕在线观看成人 | 国产精品久久久久久影院8一贰佰 | 九九热视频在线免费观看 | 国产精品一区二区三区在线 | 久久久www成人免费精品 |