C++ List的用法(整理)

C++ List的用法(整理)

C++ List的用法(整理)


資料來源: https://blog.csdn.net/lskyne/article/details/10418823

純C++線上編譯測試: https://www.tutorialspoint.com/compile_cpp_online.php
純C 線上編譯測試: https://www.tutorialspoint.com/compile_c_online.php



List將元素按順序儲存在鍊錶中. 與向量(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中重複的元素


範例:

#include <iostream> 
#include <list> 
#include <numeric> 
#include <algorithm> 
using namespace std; 
 
//创建一个list容器的实例LISTINT 
typedef list<int> LISTINT; 
//创建一个list容器的实例LISTCHAR 
typedef list<int> LISTCHAR; 
 
int main() 
{ 
    //用list容器处理整型数据  
    //用LISTINT创建一个名为listOne的list对象 
    LISTINT listOne; 
    //声明i为迭代器 
    LISTINT::iterator i; 
    
    //从前面向listOne容器中添加数据 
    listOne.push_front (2); 
    listOne.push_front (1); 
    
    //从后面向listOne容器中添加数据 
    listOne.push_back (3); 
    listOne.push_back (4); 
    
    //从前向后显示listOne中的数据 
    cout<<"listOne.begin()--- listOne.end():"<<endl; 
    for (i = listOne.begin(); i != listOne.end(); ++i) 
        cout << *i << " "; 
    cout << endl; 
    
    //从后向后显示listOne中的数据 
    LISTINT::reverse_iterator ir; 
    cout<<"listOne.rbegin()---listOne.rend():"<<endl; 
    for (ir =listOne.rbegin(); ir!=listOne.rend();ir++) { 
        cout << *ir << " "; 
    } 
    cout << endl; 
    
    //使用STL的accumulate(累加)算法 
    int result = accumulate(listOne.begin(), listOne.end(),0); 
    cout<<"Sum="<<result<<endl; 
    cout<<"------------------"<<endl; 
    
    //-------------------------- 
    //用list容器处理字符型数据 
    //-------------------------- 
    
    //用LISTCHAR创建一个名为listOne的list对象 
    LISTCHAR listTwo; 
    //声明i为迭代器 
    LISTCHAR::iterator j; 
    
    //从前面向listTwo容器中添加数据 
    listTwo.push_front ('A'); 
    listTwo.push_front ('B'); 
    
    //从后面向listTwo容器中添加数据 
    listTwo.push_back ('x'); 
    listTwo.push_back ('y'); 
    
    //从前向后显示listTwo中的数据 
    cout<<"listTwo.begin()---listTwo.end():"<<endl; 
    for (j = listTwo.begin(); j != listTwo.end(); ++j) 
        cout << char(*j) << " "; 
    cout << endl; 
    
    //使用STL的max_element算法求listTwo中的最大元素并显示 
    j=max_element(listTwo.begin(),listTwo.end()); 
    cout << "The maximum element in listTwo is: "<<char(*j)<<endl; 
	return 0;
}

/*
結果

listOne.begin()--- listOne.end():
1 2 3 4 
listOne.rbegin()---listOne.rend():
4 3 2 1 
Sum=10
------------------
listTwo.begin()---listTwo.end():
B A x y 
The maximum element in listTwo is: y
*/ 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *