日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

stl clocklist 查找元素_C++算法竞赛中常用的STL

發布時間:2024/9/15 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stl clocklist 查找元素_C++算法竞赛中常用的STL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是STL?

STL,Standard Template Library的縮寫,標準模版庫的意思。STL是一些“容器”的集合,這些容器包括list、 vector、set、queue等。

PS:這里說明下,文中出現的DataType指數據類型,DataName指變量名,cmp指一個返回類型為bool的比較函數

iterator 迭代器:

要訪問順序容器和關聯容器中的元素,需要通過“迭代器(iterator)”進行。迭代器是一個變量,相當于容器和操縱容器的算法之間的中介。迭代器可以指向容器中的某個元素,通過迭代器就可以讀寫它指向的元素。從這一點上看,迭代器和指針類似。

迭代器按照定義方式分成以下四種。

1)正向迭代器,定義方法如下:

????? 容器類名::iterator 迭代器名;

2)常量正向迭代器,定義方法如下:

????? 容器類名::const_iterator 迭代器名;

3)反向迭代器,定義方法如下:

???? 容器類名::reverse_iterator 迭代器名;

4)常量反向迭代器,定義方法如下:

?????容器類名::const_reverse_iterator 迭代器名;

迭代器用法示例會在后邊不同容器示例中展示。

vector 動態數組

所謂動態數組,就是不定長數組。

頭文件:#include

聲明:vector DataName;

基本操作:

  • push_back();,在最后面插入一個新元素

  • size(),返回vector的長度

  • clear(),清空vector

  • 可以像數組一樣使用。

例子:

vector vec; //空的vec.push_back(0); //有0vec.push_back(1); //有0,1vec.push_back(2); //有0,1,2//兩種遍歷方法for(int i=0; i printf("%d\n",vec[i]);}for(vector::iterator it=vec.begin(); it!=vec.end(); it++){ printf("%d\n",*it);//迭代器訪問}vec[1]=3; //變成0,3,3vec[2]=2;??//變成0,3,2vec.clear();//清空

stack 棧

先進后出的數據結構(FILO)

頭文件:#include

聲明:stack DataName;

基本操作:

  • push(),入棧

  • pop(),出棧

  • top(),訪問棧頂元素

  • empty(),判斷棧空

  • size(),返回棧中元素個數

例子:

s.push(1); //{1}s.push(233); //{233,1}s.push(666); //{666,233,1}cout<cout<s.pop(); //{233,1}s.push(2);??//{2,233,1}?

queue 單向隊列

先進先出的數據結構(FIFO)

頭文件:#include

聲明:queue DataName;

基本操作:

  • push(),入隊

  • pop(),出隊

  • front(),訪問隊首元素

  • back(),訪問隊尾元素

  • empty(),判斷隊空

  • size(),返回隊列元素個數

例子:

int e,m,n;queue q1;for(int i=0;i<10;i++) q.push(i); //入隊 //[0,1,2,3,4,5,6,7,8,9]if(!q1.empty()) cout<n=q1.size(); //n=10m=q1.back(); //m=9for(int i=0;i e=q1.front(); //取隊首元素 cout< q1.pop(); //出隊 }cout<if(q1.empty())??cout<

set 集合

集合中不會存在重復元素,支持高效的插入、刪除和查詢操作,復雜度均是O(logn)(對比使用數組來實現,雖然插入的時間復雜度O(1),但是刪除和查詢的時間復雜度卻是O(n))。

頭文件:#include

聲明:set DataName;

基本操作:

  • begin(),返回set第一個元素(類型為迭代器,或者說指針)

  • end(),返回set最后一個元素(同上)

  • clear(),清空set中的元素

  • empty(),判斷set是否為空

  • insert(),插入一個元素

  • erase(),刪除一個元素

  • find(),查找一個元素,返回為迭代器

  • size(),返回set的元素個數

例子:

set s;set::iterator?it;s.insert(1); //{1}s.insert(2); //{1,2}s.insert(3); //{1,2,3}s.insert(1); //{1,2,3}s.erase(1);????//{2,3}it=s.find(2);??//查找元素2,若未找到,返回s.end()?

map 映射

從一個元素映射到另一個元素的數據結構,hash是他的一種。

頭文件:#include

聲明:map DataName;從DataTypeA映射到DataTypeB

基本操作:

  • 可以像數組一樣使用

  • 迭代器有兩個屬性,first代表key,second代表value

  • count(),判斷是否存在映射

  • clear(),清空map

例子:

map<string,int> dict; //{}dict["Tom"]=1; //{"Tom":1}dict["Jone"]=2; //{"Tom":1,"Jone":2}dict.insert(map<string,int>::value_type("Mary",1));// //{"Tom":1,"Jone":2,"Mary":1}if(dict.count("Mary")){ printf("Mary存在");} else{ printf("Mary不存在");}//迭代器訪問 for(map<string,int>::iterator it=dict.begin(); it!=dict.end(); it++){ cout<first<<":"<second<<endl;}

priority_queue 優先隊列

實質就是二叉堆,使用該模版可以快速實現小根堆、大根堆。插入、刪除、查詢的時間復雜度均是O(logn)。

頭文件:#include

聲明:默認小根堆,priority_queue DataName;

自定義比較函數,priority_queue,cmp> DataName;

基本操作:

  • push(),隊尾插入元素

  • pop(),取出隊首元素

  • top(),訪問隊首元素

  • size(),獲取隊列長度

  • clear(),清空隊列

例子:

struct cmp{ bool operator() (const int &a,const int &b){//&引用 return a>b; //最大堆 } };priority_queue<int,vector<int>,cmp> q;//[]q.push(2); //[2]q.push(1); //[2,1]q.push(3); //[3,2,1]for(int i=0;i printf("%d\n",q.top());//逐個輸出隊首 q.pop();//出隊 }

sort 快排函數

頭文件:#include

sort(begin,end,cmp);? //begin為序列開始地址,end序列結束地址,cmp比較函數,cmp可以不填,默認升序

數組排序:

int a[4]={2,4,3,1};int n=4;sort(a,a+n);

vector排序:

sort(vec.begin(),vec.end());

結構體排序:

struct Point{ int x,y;}p[4]={{1,2},{1,0},{2,1},{0,1}};?bool cmp(Point a,Point b){ //比較函數,x為主關鍵字升序,y為次關鍵字升序 if(a.x==b.x) return a.y return a.x}int main(){ sort(p,p+4,cmp); return 0;}

添加涵爸微信,共同交流

~關于涵爸的介紹

標簽一:奶爸(這是我最自豪的,沒有之一)

8年奶爸生涯剛結束

新一輪奶爸生涯又開始

小二寶悄悄降臨

笑聲不斷,歡樂無窮

標簽二:編程高手(這是我給自己封的,有待認可)

才疏學淺,短見薄識

軟件開發只有10多年的經驗

掌握的C++和Java技能還不夠出神入化

前端HTML、CSS、JS的嫻熟度也不足百分

大數據、云計算、人工智能等也只略知一二

虛心萬事能成,自滿十事九空

涵爸愿虛心學習

不辜負此“高手”二字

標簽三:老師(這是自己未來的定位,還需努力)

孩子的教育大于一切

于是我放棄了高薪

編程的普及大勢所趨

于是我趟了這趟渾水

能力一般,水平有限

涵爸定當全力以赴

為大家分享最優質的信息

做出最專業的課堂

關注涵爸了解更多少兒編程知識。

總結

以上是生活随笔為你收集整理的stl clocklist 查找元素_C++算法竞赛中常用的STL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲乱乱 | 欧美性欧美zzzzzzzzz | 完美搭档在线观看 | 精品麻豆一区二区 | 久久久久久久无码 | 久久人体 | av中文网站 | 秘密基地电影免费版观看国语 | 二区在线观看 | 亚洲欧美精品午睡沙发 | 国产第一区第二区 | 岛国色图 | 国产色综合视频 | 超碰97av | 亚洲精品国产成人久久av盗摄 | 午夜剧场福利社 | 中文毛片无遮挡高潮免费 | 亚洲天堂av女优 | 尤物精品在线 | 久久久蜜桃 | av色播| 伊人国产一区 | 在线看黄网站 | 奇米影| 综合五月天 | 99热这里是精品 | 性一交一乱一色一免费无遮挡 | 日本午夜影院 | 日本人视频69式jzzij | 狠狠婷| 巨大胸大乳奶电影 | 夜夜爽夜夜叫夜夜高潮漏水 | 日本www高清 | 国产女女做受ⅹxx高潮 | 国产黄色片子 | 少妇光屁股影院 | 包射屋| 亚洲天堂v | 成人激情综合 | 精品国产91乱码一区二区三区 | 国产福利久久 | 朝鲜一级黄色片 | 手机av电影在线 | 91丨porny丨| 欧美激情福利 | 2025中文字幕 | 希岛婚前侵犯中文字幕在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 成年人黄色片网站 | 综合色区 | 成人快手免费看片 | 亚洲欧美日韩免费 | 国产视频网站在线观看 | 久久综合九九 | 国产高潮呻吟久久 | 欧美国产精品久久 | 91精品国产日韩91久久久久久 | 亚洲88av| 少妇粉嫩小泬喷水视频www | 亚洲av无码潮喷在线观看 | 国产真实交换夫妇视频 | 久久午夜国产精品 | 免费二区 | 夜夜高潮夜夜爽国产伦精品 | 精品人伦一区二区 | 无码人妻精品一区二区 | 亚洲免费片 | 亚洲一区你懂的 | 精品无码一区二区三区 | 99国产精品无码 | 精品国产一区二区三区噜噜噜 | 国产中文一区 | 精品成人免费视频 | 午夜家庭影院 | 麻豆成人精品国产免费 | 香港三级韩国三级日本三级 | 日韩三级在线 | 一级成人免费视频 | 亚洲精品小视频在线观看 | 亚洲国产精品久久AV | 亚洲情涩| 久久夜色精品亚洲 | 亚洲av成人一区二区国产精品 | 久久性感视频 | 69天堂| 亚洲字幕成人中文在线观看 | 午夜黄色| 国产黄色www | 91精品国产视频 | 精品123区| 国产91久久久 | 国产成人精品免费网站 | 国产人人爽 | 久色网 | 欧美色88 | 美女流白浆视频 | 色图av| 国产aⅴ无码片毛片一级一区2 | 欧美性爱精品在线 |