STL容器介紹

2021-07-09 10:34:30 字數 2004 閱讀 6002

fighting進行時 2016.1.12

2016第一彈,明天考試···。··· 壓力賊大。。。

廢話不多說了,今天學了stl裡的vector/list/set/map。

vector是乙個是個動態的陣列,相比陣列來講,有乙個好處:因為陣列呢,是一段連續的記憶體,如果說你要用10000個吧,但是你最開始只開了100個,它就找了個地,覺得夠了,但是越開越大,地不夠了,它就會自覺地找一塊夠的地,把自己複製過去。(相比下面介紹的list,有點。。。)

//一段實用小**

vectorv1;//定義,int型(不用我多廢話)

for(int i=0;i<10;i++)//放數

v1.push_back(i);//push_back賦值

for(int i=0;i<10;i++)//遍歷

cout<:iterator>

for(it3=v1.begin();it3!=v1.end();it3++)//遍歷,用指標

cout<

list說白了就是個鍊錶,都知道鍊錶不用連續的記憶體,用起來用法沒什麼大差,何樂而不為呢?

//一段實用小**

listl1;//定義,int型(不用我多廢話)

for(int i=0;i<10;i++)//放數

l1.push_back(i);//同上,push_back賦值

list::iterator it;//同上,指標,必須加iterator

for(it=l1.begin();it!=l1.end();++it)//遍歷

cout<

set,劉汝佳的書上翻譯是」集合」,很好的乙個特點是前面的都只能遍歷,而這貨可以高效查詢,會在後台形成乙個紅黑樹,(

願意了解的,紅黑樹鏈結在此。然而,set還有另乙個神奇的事情,一會將與map一起揭露。

//一段實用小**

sets1;//定義,int型(不用我多廢話)

for(int i=0;i<10;i++)//放數

s1.insert(i);//注意!!!insert賦值!!

set::iterator it2;//同上,指標

for(it2=s1.begin();it2!=s1.end();++it2)//遍歷

cout<

if(it2==s1.end())//如果迴圈到最後了,也沒有找到的話

cout<

map,劉汝佳的書上翻譯是「對映」,樓樓也沒搞懂什麼意思。。。但是呢我還是搞懂了,:-)  其實就是講,額,我還是在**裡說,清楚一點。現在要揭秘和set的神奇的事情啦,其實就是它們兩個勤勞的小盆友會幫你自己就把輸進去的東西排序了(預設是按字典序排,後面的博文會講到算符過載,就可以按自己的順序排啦~\(≧▽≦)/~)但是,有的人就會問了,排序的話,遇到重複的怎麼辦呢?這是很多初學者非常頭疼的乙個小問題,其實,它會幫你直接把重複的去重到只剩乙個。」喂喂喂,別呀,我還要用重複的呢!「那推薦你選擇multiset或multimap,不會去重的。

//一段實用小**

mapmapstudent;//這個定義呢,陌生一點,乙個string,乙個int,還有名稱

mapstudent.insert(pair("swq",1));//你肯定會說,解釋詳細一點啊,當然,接上面的話,其實map就是一對量,前面的是string型的,後面的是int型的

mapstudent.insert(pair("ddd",1));//用insert複製,前面的string型可以作為名字呦~

mapstudent.insert(map::value_type ("student_two",9));//also,value_type賦值,其實都差不多

cout

cout<:iterator>

for(it5=mapstudent.begin();it5!=mapstudent.end();++it5)//遍歷

標頭檔案:#include

總結time!!

說實話的,其實真的很推薦大家用stl的這寫容器,用著用著就會發現真的很方便。stl的六種容器:vector/list/set/map/mulitset/mulitmap

STL容器介紹

stl的容器可以分為以下幾個大類 一 序列容器,有vector,list,deque,string.二 關聯容器,有set,multiset,map,mulmap,hash set,hash map,hash multiset,hash multimap 三 其他的雜項 stack,queue,va...

STL容器swap操作介紹

今天通過這篇部落格,以兩個非常規視角介紹stl容器swap操作。swap操作非常容易理解,因為字面意思不多不少的表達了函式所做的事,也即 交換 關於swap做了什麼唯一值得關注的就是交換的是指標而非內容。那麼交換之後容器的狀態呢,是否可以通過交換達到其他什麼目的呢。常見的連續記憶體容器,例如vect...

新手向 stl常用容器介紹

1 容器的基本概念 stl庫為許多常用的資料結構提供了通用的模板,我們叫它容器。顧名思義,容器可以用來儲存資料,其中的資料可以是預定義型別,如int double,也可以是自定義型別。容器類中的元素自動申請記憶體,不需要new和delete。新增了相應的標頭檔案後容器就可以直接使用了。宣告乙個容器的...