一.stl容器簡介
1.stl是c++標準程式庫的核心,是所有c++編譯器和所有作業系統平台都支援的一種庫。
2.1.
順序容器的元素排列順序與元素值無關,是由元素新增到容器裡的次序決定。順序容器包括:vector(向量)、list。
2.2關聯容器包括:map、set、multimap、multiset。
二。初始化
3.1stl容器初始化
std::list l;
std::vectorc(l.begin(),l.end());
3.2 size operator
size() 返回當前容器的元素數量
empty()判斷容器是否為空
max_size() 返回容器能容納的最大元素數量
3.3 comparison
= =,!=,,<=,>=.
如果兩個容器的所有元素按順序相等,那麼這兩個容器相等。
3.4 assignment 和swap
3.5與iterator相關的操作
begin() 返回乙個迭代器只想第乙個元素
end() 返回乙個迭代器指向最後乙個元素
3.6元素操作
intsert(pos,e) 將元素e安插與迭代器pos所指的位置
erase(beg,end) 移除beg,end區間內的所有元素
clear() 移除所有元素
三.容器vector
4.向量vector
vector 模擬動態陣列
初始化:
#include
using std::vector;
vector<
int> vec1;
//產生空的vector
vector<
int>
vec2
(vec1)
;//使用vec1初始化vec2
vector<
int>
vec3
(vec1.
begin()
,vec1.
end())
;//使用vec1初始化vec2
vector<
int>
vec4(10
);//10個值為0的元素
vector<
int>
vec5(10
,4);
//10個值為4的元素
vector
vec6(10
,"null");
//10個值為null的元素
vector其他操作:
vec1.assign(n,e)//將元素n個e複製給vec1
vec1.
push_back
(100);
//新增元素
int size = vec1.
size()
;//元素個數
bool isempty = vec1.
empty()
;//判斷是否為空
cout<
<
//取得第乙個元素
vec1.
insert
(vec1.
end(),
5,3)
;//從vec1.back位置插入5個值為3的元素
vec1.
pop_back()
;//刪除最後元素
vector<
int>
::iterator iter = vec1.
begin()
;//獲取迭代器的位址
vec1.
clear()
;//清空元素
``四。容器map/multimap
使用平衡二叉樹管理元素,包括兩部分(key,value)
內部儲存結構:
![結構]
//初始化
//特殊搜尋操作
count
(key)
//返回鍵值等於key的元素個數
find
(key)
//返回鍵值等於key的第乙個元素
lower_bound
(key)
//返回鍵值大於等於key的第乙個元素
upper_bound
(key)
//返回鍵值大於key的第乙個元素
五.容器set/multiset
使用平衡二叉樹管理元素,集合(set)是一種包含已排序物件的關聯容器。
set set1;
set1.
insert
("the");
//直接新增
set<
int> iset;
//訪問
for(
int i =
0; i<
10; i++
)iset.
insert
(i);
iset.
find(1
)// 返回指向元素內容為1的指標
iset.
find(11
)// 返回指標iset.end()
iset.
count(1
)// 存在,返回1
set<
int>
::iterator it;
//查詢
it=s.
find(5
);//查詢鍵值為5的元素
if(it!=s.
end())
//找到
cout<<
*it<
else
//未找到
cout<<
"未找到"
;
C STL程式設計學習(一)
檔案字串流的使用方式 結尾開設新的專欄了,之前刷codewars的時候經常性的使用一些stl裡面的一些功能,也可以多多少少掌握一些比較方便的用法。但是,僅僅是對一些簡單用法的掌握,缺乏系統的學習,是遠遠無法勝任之後更複雜的要求。靈感 於積累,而靈感的出現就是知識網路中相互聯絡的知識產生共鳴。而要使我...
C STL程式設計學習(三)
結束函式模板就是把函式型別引數化了,類模板則也是一樣的。template class t class person void show t mid t mage void test01 就創造了單個的類模板,這裡由於類模板必須顯式指定型別,所以用了 int 表示這個person是int型別的 類模板...
C STL容器學習總結之八 對映map
c stl容器學習總結之一 向量vector c stl容器學習總結之二 鍊錶list c stl容器學習總結之三 雙端佇列deque c stl容器學習總結之四 佇列queue c stl容器學習總結之五 優先佇列priority queue c stl容器學習總結之六 棧stack c stl容...