天天看點

【C++】 C++标準模闆庫(二) Lists

1. C++ Lists(連結清單)

Lists将元素按順序儲存在連結清單中. 與 向量(vectors)相比, 它允許快速的插入和删除,但是随機通路卻比較慢.

​​assign()​​ 給list指派
​​back()​​ 傳回最後一個元素
​​begin()​​ 傳回指向第一個元素的疊代器
​​clear()​​ 删除所有元素
​​empty()​​ 如果list是空的則傳回true
​​end()​​ 傳回末尾的疊代器
​​erase()​​ 删除一個元素
​​front()​​ 傳回第一個元素
​​get_allocator()​​ 傳回list的配置器
​​insert()​​ 插入一個元素到list中
​​max_size()​​ 傳回list能容納的最大元素數量
​​merge()​​ 合并兩個list
​​pop_back()​​ 删除最後一個元素
​​pop_front()​​ 删除第一個元素
​​push_back()​​ 在list的末尾添加一個元素
​​push_front()​​ 在list的頭部添加一個元素
​​rbegin()​​ 傳回指向第一個元素的逆向疊代器
​​remove()​​ 從list删除元素
​​remove_if()​​ 按指定條件删除元素
​​rend()​​ 指向list末尾的逆向疊代器
​​resize()​​ 改變list的大小
​​reverse()​​ 把list的元素倒轉
​​size()​​ 傳回list中的元素個數
​​sort()​​ 給list排序
​​splice()​​ 合并兩個list
​​swap()​​ 交換兩個list
​​unique()​​ 删除list中重複的元素

2. C++ Lists(連結清單)

指派(assign)

​文法:​

void assign( input_iterator start, input_iterator end );
  void assign( size_type num, const TYPE &val );      

assign()函數以疊代器start和end訓示的範圍為list指派或者為list指派num個以val為值的元素。

​相關主題:​

​insert(), ​

back

​文法:​

reference back();      

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

​相關主題:​

​front(), pop_back(), ​

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;      

​相關主題:​

​end(), ​

clear

​文法:​

void clear();      

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

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();
    }      

end

​文法:​

iterator end();      

end()函數傳回一個​​疊代器​​,指向連結清單的末尾。

​相關主題:​

​begin(), ​

erase

​文法:​

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

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

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();
    }      

​相關主題:​

​back(), ​

get_allocator

​文法:​

allocator_type get_allocator();      

get_allocator()函數傳回連結清單的配置器。

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的位置。傳回值是一個​​疊代器​​,指向被插入的元素。

max_size

​文法:​

size_type max_size();      

max_size()函數傳回連結清單能夠儲存的元素數目。

merge

​文法:​

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

merge()函數把自己和lst連結清單連接配接在一起,​​​産生一個整齊排列的組合連結清單。如果指定compfunction,則将指定函數作為比較的依據。

pop_back

​文法:​

void pop_back();      

pop_back()函數删除連結清單的最後一個元素。

​相關主題:​

​pop_front(), ​

pop_front

​文法:​

void pop_front();      

pop_front()函數删除連結清單的第一個元素。

​相關主題:​

​pop_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

​Syntax:​

void push_front( const TYPE &val );      

push_front()函數将val連接配接到連結清單的頭部。

​相關主題:​

​push_back(), ​

rbegin

​文法:​

reverse_iterator rbegin();      

rbegin()函數傳回一個逆向​​疊代器​​,指向連結清單的末尾。

​相關主題:​

​rend(), ​

remove

​文法:​

void remove( const TYPE &val );      

remove()函數删除連結清單中所有值為val的元素。例如

// 建立一個連結清單,元素是字母表的前10個元素
    list<char> charList;
    for( int i=0; i < 10; i++ )
      charList.push_front( i + 65 );

    // 删除所有'E'的執行個體
    charList.remove( 'E' );      

remove_if

​文法:​

void remove_if( UnPred pr );      

remove_if()以一進制謂詞pr為判斷元素的依據,周遊整個連結清單。如果pr傳回true則删除該元素。

rend

​文法:​

reverse_iterator rend();      

rend()函數​​疊代器​​指向連結清單的頭部。

resize

​文法:​

void resize( size_type num, TYPE val );      

resize()函數把list的大小改變到​num​。被加入的多餘的元素都被指派為val

reverse

​文法:​

void reverse();      

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

size

​文法:​

size_type size();      

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

排序(sort)

​文法:​

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

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

splice

​文法:​

void splice( iterator pos, list

       &lst );
  void splice( 
      iterator pos, list

        &lst, 
       iterator del );
  void splice( 
       iterator pos, list

         &lst, 
        iterator start, 
        iterator end );      

splice()函數把lst連接配接到pos的位置。如果指定其他參數,則插入lst中del所指元素到現連結清單的pos上,或者用start和end指定範圍。

swap

​文法:​

void swap( list &lst );      

swap()函數交換lst和現連結清單中的元素。

unique

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

繼續閱讀