程式設計B之C STL學習總結

2021-10-05 14:01:43 字數 3216 閱讀 6128

一.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容...