C STL函式總結

2021-09-22 18:01:32 字數 3749 閱讀 1086

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的記憶體空間,且分配的記憶體空間是...