list容器是一種序列式容器,它是stl實現的雙向鍊錶,與vector相比它可以實現快速的插入和刪除,但是不能夠快速的隨機訪問。
#include
list() 宣告乙個空列表;
list(n) 宣告乙個有n個元素的列表,每個元素都是由其預設建構函式t()構造出來的
list(n,val) 宣告乙個由n個元素的列表,每個元素都是由其複製建構函式t(val)得來的
list(first,last) 宣告乙個列表,其元素的初始值**於由區間所指定的序列中的元素
listlst1; //建立空list
listlst2(5); //建立含有5個元素的list
listlst3(3,2); //建立含有3個元素的list
listlst4(lst2); //使用lst2初始化lst4
listlst5(lst2.begin(),lst2.end()); //同lst4
list中常用的函式:
push_back() 和push_front():使用list的成員函式push_back和push_front插入乙個元素到list中。其中push_back()從list的末端插入,而 push_front()實現的從list的頭部插入。
empty():利用empty() 判斷list是否為空。
resize(): 如果呼叫resize(n)將list的長度改為只容納n個元素,超出的元素將被刪除,如果需要擴充套件那麼呼叫預設建構函式t()將元素加到list末端。如果呼叫resize(n,val),則擴充套件元素要呼叫建構函式t(val)函式進行元素構造,其餘部分相同。
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); 另外乙個是swap(l1,l2),都可能完成連個鍊錶的交換。
front()和back():返回第乙個元素。返回最後乙個元素。
erase():刪除乙個元素或乙個區域的元素(兩個過載)l.erase(l.begin()); 將l的第乙個元素刪除。l.erase(l.begin(),l.end()); 將l的從begin()到end()之間的元素刪除。
sort():給list中的元素進行排序。
splice():合併兩個list l1.splice(l1.end(),l2) //合併為l1並且將l2清空。
STL模板整理 priority queue
優先佇列是佇列的一種,不過它可以按照自定義的一種方式 資料的優先順序 來對佇列中的資料進行動態的排序,每次的push和pop操作,佇列都會動態的調整,以達到我們預期的方式來儲存。定義 priority queue p 最大值優先,是大頂堆一種簡寫方式 priority queue,greater q...
STL模板整理 set
set作為乙個容器也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。應該注意的是set中數元素的值不能直接被改變。1.begin 返回指向第乙個元素的迭代器 2.clear 清除所有元素 3.count 返回某個值元...
STL模板整理 vector
1 c 標準模板庫與c 標準庫的關係 c 標準模板庫其實屬於c 標準庫的一部分,c 標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是 類模板,我們可以呼叫這些模板來定義乙個具體的類 與之前的自己手動建立乙個函式模版或者是類模板不一樣,我們使用了 stl就不用自己來建立模板了,這些模板都...