c 標準模板庫及成員函式大彙總

2021-09-24 02:09:21 字數 2620 閱讀 8985

c++ 標準模板庫

說到c++的標準模板庫,可能很多人都會說c++的標準庫,那麼他們有什麼區別呢?

1、c++標準模板庫與c++標準庫的關係

c++標準模板庫其實屬於c++標準庫的一部分,c++標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是

類模板,我們可以呼叫這些模板來定義乙個具體的類;與之前的自己手動建立乙個函式模版或者是類模板不一樣,我們使用了

stl就不用自己來建立模板了,這些模板都定義在標準模板庫中,我們只需要學會怎麼使用這些類模板來定義乙個具體的類,

然後能夠使用類提供的各種方法來處理資料。

2、stl六大元件:容器(containers)、演算法(algorithms)、迭代器(iterators)、函式物件(functors)、介面卡(adapters)、分配器(allocators)

3、容器

首先,我們必須理解一下什麼是容器,對比我們生活當中的容器,例如水杯、桶、水瓶等等這些東西,其實他們都是容器,他們的乙個共同點就是:都是用來

存放液體的,能夠用來存放一些東西;其實在我們的c++中說的這個容器其實作用也是用來存放"東西",但是存放的是資料,在c++中容器就是一種用來存放

資料的物件

關聯性容器:set、multiset、map、multimap

容器介面卡:stack、queue   這兩個只支援常規的佇列和棧的操作

具體我就不詳細解釋了    詳情可以檢視c++ prime plus

好的  下面我們進入正題!!!!!!

5、vector類的成員函式

empty():判斷向量是否為空,為空返回真,否則為假

其實返回乙個迭代器

clear():清空向量 相當於陣列中的初始化

front():返回得到向量的第乙個元素的資料

back():返回得到向量的最後乙個元素的資料

size():返回得到向量中元素的個數

erase(pos): 刪除pos位置的資料

erase(begin,end): 刪除[begin,end)區間的資料

insert(pos,data): 在pos位置插入資料

push_back(資料):將資料插入到向量的尾部

pop_back():刪除向量尾部的資料

使用方法     vectora;                 只要是用成員函式,必須是這種用點的形式,下面則不再贅述

a.push_back("asd");

list容器

是一種序列式容器,它是stl實現的雙向鍊錶,與vector相比它可以實現快速的插入和刪除,但是不能夠快速的隨機訪問。

list中有同上面的一類成員函式我就不說了,值得強調的是,list只能使用成員函式sort(),或成員函式sort(函式),來進行排序

不能使用外部sort進行排序,因為外部排序函式sort要求的容器必須能夠進行隨機訪問,而list不支援隨機訪問

哎呀  算了算了  還是列出來吧 

push_back() 和push_front():使用list的成員函式push_back和push_front插入乙個元素到list中。其中push_back()從list的末端插入,而 push_front()實現的從list的頭部插入。

empty():利用empty() 判斷list是否為空

clear(): 清空list中的所有元素。

front()和back(): 通過front()可以獲得list容器中的頭部元素,通過back()可以獲得list容器的最後乙個元素。但是有一點要注意,就是list中元素是空的時候,這時候呼叫front()和back()會發生什麼呢?實際上會發生不能正常讀取資料的情況,但是這並不報錯,那我們程式設計序時就要注意了,個人覺得在使用之前最好先呼叫empty()函式判斷list是否為空。

pop_back和pop_front():通過刪除最後乙個元素,通過pop_front()刪除第乙個元素;序列必須不為空,如果當list為空的時候呼叫pop_back()和pop_front()會使程式崩掉。

reverse():通過reverse()完成list的逆置。

swap():交換兩個鍊錶(兩個過載),乙個是l1.swap(l2);

erase():刪除乙個元素或乙個區域的元素(兩個過載)l.erase(l.begin()); 將l的第乙個元素刪除。l.erase(l.begin(),l.end()); 將l的從begin()到end()之間的元素刪除。

splice():合併兩個list l1.splice(l1.end(),l2)    //合併為l1並且將l2清空。

注意!!!! 合併之後是將l2清空!!!!!!

merge(list & x)    將鍊錶x與呼叫鍊錶合併,兩個鍊錶必須已經排序,合併後的經過排序的鍊錶儲存在呼叫鍊錶中,x為空,這個函式的複雜度為線性時間

聽不懂??  沒看懂??

那咱們來看個例子    :  list  a,b;    

a.merge(b)     則最後結果為a,b是空

remove(const t &val) 從鍊錶中刪除val的所有例項,複雜度為線性時間

splice(iterator pos,list x)  將鍊錶內容插入到pos前面,x將為空   複雜度為固定時間

unique()將鍊錶中連續的相同元素壓縮為單個元素,複雜度為線性時間

參考文獻  

C 標準模板庫 STL 彙總

一 stl容器概述 c stl standard template library標準模板庫 是通用類模板和演算法的集合,它給我們提供了一些標準的資料結構的實現如queues 佇列 lists 鍊錶 和 stacks 棧 等。在我們使用c 程式設計時經常會使用到stl容器,非常簡單也很方便。stl的...

C 標準庫常用函式彙總

include指令 排序sort vec.begin vec.end 反轉reverse str.begin str.end include指令 定義了三個型別來支援 檔案io 從乙個給定檔案讀取資料 ifstream fin pose.txt 向乙個給定檔案寫入資料 ofstream 讀寫給定檔案...

C常用標準庫及函式

常用標頭檔案 stdio.h stdlib.h ctype.h string.h math.h system.h 1 stdio庫 主要功能是輸入輸出操作,包括檔案輸入輸出,標準輸入輸出。輸出函式 int puts const char str 把乙個字串寫出到標準輸出 int printf cha...