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():判斷向量是否為空,為空返回真,否則為假使用方法 vectora; 只要是用成員函式,必須是這種用點的形式,下面則不再贅述其實返回乙個迭代器
clear():清空向量 相當於陣列中的初始化
front():返回得到向量的第乙個元素的資料
back():返回得到向量的最後乙個元素的資料
size():返回得到向量中元素的個數
erase(pos): 刪除pos位置的資料
erase(begin,end): 刪除[begin,end)區間的資料
insert(pos,data): 在pos位置插入資料
push_back(資料):將資料插入到向量的尾部
pop_back():刪除向量尾部的資料
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...