list(鏈表)常用成員(順序容器)----插入push_back,push_front,insert刪除pop_back,pop_front,erase,clear遍歷begin,end判空emp

list頭文件:

#include <list>

using namespace std;

 

list和vector的不同在於,vector採用的順序存儲,即vector中的元素像數組一樣,一個緊挨着一個存放。

所以vector可以進行隨機存取。(通常情況下使用vector是最優的選擇)。但是每當從vector中刪除一個元素或向vector中插入一個元素時,代價都比較高。

而list則不一樣。list採用鏈式存儲方法,所以list不能隨機存取,但是在list插入和刪除元素的代價都非長笑。

 

list的常用接口:


                                                      判空                                 empty

empty 
語法:

  bool empty();  

empty()函數返回真(true)如果鏈表爲空,否則返回假。例如:

    list<int> the_list;      for( int i = 0; i < 10; i++ )        the_list.push_back( i );        while( !the_list.empty() ) {        cout << the_list.front() << endl;        the_list.pop_front();      }  

                       獲取list中元素的個數             size               
size 
語法:
  size_type size();  

size()函數返回list中元素的數量。


                                                      增                    push_back          push_front           insert

        在鏈表的尾部插入元素:           push_back

push_back 
語法:

  void push_back( const TYPE &val );  

push_back()將val連接到鏈表的最後。例如:

list<int> the_list;
       for( int i = 0; i < 10; i++ ){
             the_list.push_back( i );

}

在鏈表的首部插入元素:         push_front
push_front 
語法:

  void push_front( const TYPE &val );  

push_front()函數將val連接到鏈表的頭部。

在鏈表的指定位置上插入元素:          insert
insert 
語法:

  iterator insert( iterator pos, const TYPE &val );    void insert( iterator pos, size_type num, const TYPE &val );    void insert( iterator pos, input_iterator start, input_iterator end );  

insert()插入元素val到位置pos,或者插入num個元素val到pos之前,或者插入start到end之間的元素到pos的位置。返回值是一個迭代器,指向被插入的元素。


                                                   刪                     pop_back            pop_front       erase       clear

        刪除鏈表的最後一個元素,但不返回鏈表最後一個元素的值:                pop_back

pop_back 
語法:

  void pop_back();  

pop_back()函數刪除鏈表的最後一個元素。

刪除鏈表首部的元素,但不返回鏈表第一個元素的值:                pop_front
pop_front 
語法:

  void pop_front();  

pop_front()函數刪除鏈表的第一個元素。

刪除鏈表指定位置上的元素:          erase

erase 
語法:

  iterator erase( iterator pos );    iterator erase( iterator start, iterator end );  

erase()函數刪除以pos指示位置的元素, 或者刪除start和end之間的元素。 返回值是一個迭代器,指向最後一個被刪除元素的下一個元素。

刪除鏈表中的所有元素              clear

clear 
語法:

  void clear();  

clear()函數刪除list的所有元素。


                                               獲取鏈表最後一個元素back    和      第一個元素front

        獲取list的最後一個元素,但不刪除最後一個元素: 

back 
語法:

  reference back();  

back()函數返回一個引用,指向list的最後一個元素。

獲取list的第一個元素,但不刪除第一個元素:
front 
語法:

  reference front();  

front()函數返回一個引用,指向鏈表的第一個元素。

    list<int> the_list;      for( int i = 0; i < 10; i++ )        the_list.push_back( i );        while( !the_list.empty() ) {        cout << the_list.front() << endl;        the_list.pop_front();      }  


                                                 遍歷鏈表            begin                 end
獲取指向list第一個元素的迭代器:

begin 
語法:

  iterator begin();  

begin()函數返回一個迭代器,指向list的第一個元素。例如,

    // 創建一個元素類型是字符的鏈表      list<char> charList;      for( int i=0; i < 10; i++ )        charList.push_front( i + 65 );  
    // 顯示這個鏈表      list<char>::iterator theIterator;      for( theIterator = charList.begin(); theIterator != charList.end(); theIterator++ )        cout << *theIterator;
獲取指向list末尾的迭代器:
end 
語法: 
  iterator end();  

end()函數返回一個迭代器,指向鏈表的末尾。


                                                         鏈表合併                merge
merge 
語法:

  void merge( list &lst );    void merge( list &lst, Comp compfunction );  

merge()函數把自己和lst鏈表連接在一起,產生一個整齊排列的組合鏈表。如果指定compfunction,則將指定函數作爲比較的依據。


                                                          將list中的元素逆序                  reverse
reverse 
語法:

  void reverse();  

reverse()函數把list所有元素倒轉。


                                                           對list中的元素進行排序           sort

排序(sort) 
語法:

  void sort();    void sort( Comp compfunction );  

sort()函數爲鏈表排序,默認是升序。如果指定compfunction的話,就採用指定函數來判定兩個元素的大小。


                                                          修改鏈表的長度               resize

 修改鏈表的大小,多餘元素用val填充:     resize

resize 
語法:

  void resize( size_type num, TYPE val );  

resize()函數把list的大小改變到num。被加入的多餘的元素都被賦值爲val


                                                          刪除鏈表中的重複元素                unique
unique 
語法:

  void unique();    void unique( BinPred pr );  

unique()函數刪除鏈表中所有重複的元素。如果指定pr,則使用pr來判定是否刪除。

發佈了7 篇原創文章 · 獲贊 14 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章