1.建立vector的方式
a.初始化10個整型變數
vector <
int>a(
10);
這樣寫最後,vector容器中是10個0;
b.初始化10個整型變數,並賦初值為1
vector <
int>a(
10,1)
;
c.利用對另外乙個vector容器進行擷取來建立乙個新的vector
vector <
int>a(
10);int i=0;
for(vector<
int>
::iterator it = a.
begin()
;it!=a.
end(
);it++
)//為a這個容器賦值為0123456789
cout
int>
b(a.
begin()
,a.begin()
+3);
for(vector<
int>
::iterator it = b.
begin()
;it!=b.
end(
);it++
)//結果為012
d.利用另外乙個vector容器來建立乙個新的vector
//宣告大小為10個整型變數的vector容器,預設為10個0
vector <
int>a(
10); vector <
int>
b(a)
;//對新生成的容器b進行遍歷
for(vector<
int>
::iterator it = b.
begin()
;it!=b.
end(
);it++
)
函式
說明a.assign(b.begin(), b.begin()+3);
b為向量,將b的0~2個元素構成的向量賦給a
a.assign(4,2);
//是a只含4個元素,且每個元素為2
a.back();
返回a的最後乙個元素
a.front();
返回a的第乙個元素
a[i];
返回a的第i個元素,當且僅當a[i]存在,如果不存在則會返回亂碼
a.clear();
清空a中的元素
a.empty();
判斷a是否為空,空則返回ture,不空則返回false
a.pop_back();
刪除a向量的最後乙個元素
a.erase(a.begin()+1,a.begin()+3);
//刪除a中第1個(從第0個算起)到第2個元素,也就是說刪除的元素從a.begin()+1
a.push_back(5);
在a的最後乙個向量後插入乙個元素,其值為5
a.insert(a.begin()+1,5);
在a的第1個元素(從第0個算起)的位置插入數值5,如a為1,2,3,4,插入元素後為1,5,2,3,4
a.insert(a.begin()+1,3,5);
在a的第1個元素(從第0個算起)的位置插入3個數,其值都為5
a.insert(a.begin()+1,b+3,b+6);
b為陣列,在a的第1個元素(從第0個算起)的位置插入b的第3個元素到第5個元素(不包括b+6),如b為1,2,3,4,5,9,8 ,插入元素後為1,4,5,9,2,3,4,5,9,8
a.size();
//返回a中元素的個數;
a.capacity();
返回a在記憶體中總共可以容納的元素個數
a.resize(10);
將a的現有元素個數調至10個,多則刪,少則補,其值隨機
a.resize(10,2);
將a的現有元素個數調至10個,多則刪,少則補,其值為2
a.reserve(100);
將a的容量(capacity)擴充至100,也就是說現在測試a.capacity();的時候返回值是100.這種操作只有在需要給a新增大量資料的時候才 顯得有意義,因為這將避免記憶體多次容量擴充操作(當a的容量不足時電腦會自動擴容,當然這必然降低效能)
a.swap(b);
//b為向量,將a中的元素和b中的元素進行整體**換
a==b;
//b為向量,向量的比較操作還有!=,>=,<=,>,<
vector的合併
使用insert函式v:
v.
insert
(v.end()
,v1.
begin()
,v1.
end())
;v.insert
(v.end()
,v2.
begin()
,v2.
end())
;
find函式:用來查詢容器中是否存在這個函式,返回乙個迭代器。
sort函式:可以對容器進行排序,也可以對陣列進行排序。
陣列:sort(a,a+5) 容器:sort(vector.begin(),vector.end())
unique函式:對乙個已排序的容器操作,將重複元素移動到容器末尾,並返回第乙個重複元素的迭代器位置
1.利用迭代器進行遍歷
for
(vector<
int>
::iterator it = b.
begin()
;it!=b.
end(
);it++
)
set_difference();//差集
set_union();//並集
set_intersection();//交集
#include #include using namespace std;
int main()
; seta(a,a+5);
int b =;
setb(b,b+7);
vectorc ;
set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.end()));
for(auto i:c)
{cout《結果為:1234567
注意:auto須在c++11中使用,自動型別
algoritm
例如: setint是用set< int >宣告的容器,現已包含1,3,5,7,9元素。
bool bfind = binary_search(setint.begin(),setint.end(),5);
此時 bfind == true
4.常用的排序演算法
random_shuffle: 對指定範圍內的元素隨機調整次序。
reverse: 對指定範圍內元素重新反序排序。
merge: 合併兩個有序序列,存放到另乙個序列。
5.常用的拷貝和替換演算法
6.常用的算術與生成演算法
accumulate: 對指定範圍內的元素求和,然後結果再加上乙個由val指定的初始值。
fill: 將輸入值賦給標誌範圍內的所有元素。
7.常用的集合演算法
8.常用的遍歷演算法
參考文章:
C STL常用函式模組總結 set
sets是乙個儲存元素的容器,其中每個元素最多隻出現一次,元素的遵循乙個特定的順序。元素一旦被放入次容器將不能被修改 修改元素的值 但是可以對元素進行插入和移除操作。set內部的元素遵循嚴格弱排序,因此在尋找元素的時候比unordered map稍微慢一些,但是可以直接通過指標操作子分組,set是乙...
C STL使用總結
vector動態陣列 back 返回陣列最後乙個元素。宣告 vector res m,vector n,0 上面的一行宣告了乙個二維陣列m行n列的二維陣列,並且初始化為0 有乙個交換的函式reserve res.begin res.end 將res行交換 第一行變最後 第二行變倒數第二 stack堆...
C STL容器總結
三大類容器 1.序列式容器 vector deque list vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造乙個初始長度為0的記憶體空間,且分配的記憶體空間是...