前言:
c++stl 之所以得到廣泛的讚譽,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,map和set封裝了二叉樹等,在封裝這些資料結構的時候,stl按照程式設計師的使用習慣,以成員函式方式提供的常用操作,如:插入、排序、刪除、查詢等。讓使用者在stl使用過程中,並不會感到陌生。(摘自博主蔡軍帥)
下面就讓我們一起來學習stl中的那些強大的容器吧!
一、棧(stack)
1.definition :
微軟翻譯:stack—— n. 堆疊;一堆;大量;許多;v.(使)放成整齊的一疊(或一摞、一堆)。
2.標頭檔案:#include
3.定義stack型別:stacks;(其中type為資料型別:如int、float、char等)
4.correlation operation:
(1)s.push(item); //將item壓入棧頂
(2)s.pop(); //刪除棧頂的元素,但不會返回
(3)s.top(); //返回棧頂的元素,但不會刪除
(4)s.size(); //返回棧中元素的個數
(5)s.empty(); //檢查棧是否為空,如果為空返回true,否則返回false
二、佇列(queue)
1.definition:
微軟翻譯:queue—— n. 行列;(儲存的資料)佇列;v.(人、車等)排隊等候;(使)排隊;列隊等待
2.標頭檔案:#include
3.定義queue型別:queueque;(其中type為資料型別,如int、float、char)
4.correlation operation:
(1)q.push(item); //將item壓入佇列尾部
(2)q.pop(); //刪除隊首元素,但不返回
(3)q.front(); //返回隊首元素,但不刪除
(4)q.back(); //返回隊尾元素,但不刪除
(5)q.size(); //返回佇列中元素的個數
(6)q.empty(); //檢查佇列是否為空,如果為空返回true,否則返回false
三、動態陣列(vector)
1.definition:
微軟翻譯:vector —— n.向量;向量;載體;(航空器的)航線;v.【航】(對飛行中的飛機)指示航向;【航】電(磁)波導航
標準模板庫中的部分內容,中文偶爾譯作「容器」,但並不準確。它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。
2.標頭檔案:#include
3.定義vector型別:vectorvec;
4.correlation operation:
(1)尾部插入數字:vec.push_back(a);
(2)使用下標訪問元素:cout
vector::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<
(6)向量大小:vec.size();
(7)清空:vec.clear();
(8)使用at()函式訪問元素:cout
1) 使用reverse將元素翻**需要標頭檔案#include
reverse(vec.begin(),vec.end());將元素翻轉,即逆序排列!
摘自:csdn博主:那年聰聰
四、set
1.definition:
微軟翻譯:n. 集;集合;一套;電視機;v. 設定;放;樹立;安排
csdn博主蔡軍帥:關於set,必須說明的是set關聯式容器。set作為乙個容器也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。應該注意的是set中數元素的值不能直接被改變。c++ stl中標準關聯容器set, multiset, map, multimap內部採用的就是一種非常高效的平衡檢索二叉樹:紅黑樹,也稱為rb樹(red-black tree)。rb樹的統計效能要好於一般平衡二叉樹,所以被stl選擇作為了關聯容器的內部結構。
2.標頭檔案:#include
set使用方法:
begin() ,返回set容器的第乙個迭代器
end() ,返回set容器的最後乙個迭代器
clear() ,刪除set容器中的所有的元素
empty() ,判斷set容器是否為空
max_size() ,返回set容器可能包含的元素最大個數
size() ,返回當前set容器中的元素個數
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
lower_bound(key_value) ,返回第乙個大於或等於key_value的定位器
upper_bound(key_value),返回第乙個乙個大於key_value的定位器
如果找不到目標值迭代器等於end() 用upper_bound()==end()判斷即可
五、deque
資料結構中的排序
排序就是將乙個元素的任意序列重排成乙個按關鍵字有序的序列。如果使用某一排序演算法排序後,ri和rj的相對位置並未發生變化,則稱這個排序演算法是穩定的。否則就稱這個演算法是不穩定的。內部排序 在排序期間,元素全部存放在記憶體中的排序 外部排序 在排序期間元素無法全部同時存放在記憶體中,必須在排序的過程...
資料結構中的排序
在論壇上看到的 幫助理解就好 這個東西很好記得 關於內部排序的演算法的時間複雜度,空間複雜度,穩定性的記憶方法,原創哈 王道論壇上看到 1 時間複雜度 以n nlogn 的速度快希歸堆,但是太快也不好,最壞達到o n 2 這樣就記住了4個!冒泡冒的好是o n 冒得不好就是o n 2 直接插入插得好,...
Python中的資料結構
在記憶體中儲存的資料可以有多種型別。例如,乙個人的年齡可以用數字來儲存,他的名字可以用字元來儲存。python 定義了一些標準型別,用於儲存各種型別的資料。python有五個標準的資料型別 數字資料型別用於儲存數值。他們是不可改變的資料型別,這意味著改變量字資料型別會分配乙個新的物件。當你指定乙個值...