1. 程式人生 > >list(連結串列)常用成員(順序容器)----插入push_back,push_front,insert刪除pop_back,pop_front,erase,clear遍歷begin,end判空empt

list(連結串列)常用成員(順序容器)----插入push_back,push_front,insert刪除pop_back,pop_front,erase,clear遍歷begin,end判空empt

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

  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_frontpush_front  語法:

  void push_front( const TYPE &val );  

push_front()函式將val連線到連結串列的頭部。

在連結串列的指定位置上插入元素:          insertinsert  語法:

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

  void pop_back();  

pop_back()函式刪除連結串列的最後一個元素。

刪除連結串列首部的元素,但不返回連結串列第一個元素的值:                pop_frontpop_front  語法:

  void pop_front();  

pop_front()函式刪除連結串列的第一個元素。

刪除連結串列指定位置上的元素:          erase

erase  語法:

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  語法:

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 
語法: 

end()函式返回一個迭代器,指向連結串列的末尾。

                                                         連結串列合併                mergemerge  語法:

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

merge()函式把自己和lst連結串列連線在一起,產生一個整齊排列的組合連結串列。如果指定compfunction,則將指定函式作為比較的依據。

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

  void reverse();  

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

                                                           對list中的元素進行排序           sort

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

sort()函式為連結串列排序,預設是升序。如果指定compfunction的話,就採用指定函式來判定兩個元素的大小。

                                                          修改連結串列的長度               resize

 修改連結串列的大小,多餘元素用val填充:     resize

  void resize( size_type num, TYPE val );  

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

刪除連結串列中的重複元素                uniqueunique  語法:

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

unique()函式刪除連結串列中所有重複的元素。如果指定pr,則使用pr來判定是否刪除。