【C++教學】list 雙向鏈結結構 說明與用法範例

list 是 C++ 標準模板庫(STL, Standard Template Library)的成員之一,它是一個雙向的 linked list (鏈結串列),適合需要頻繁插入或刪除元素的場景。它不支援隨機存取,但插入與刪除操作效率高。

特性

  • 雙向鏈結結構,插入與刪除效率高(O(1))。
  • 不支援隨機存取(無法使用索引)。
  • 支援正向與反向遍歷。

成員函數介紹

  • push_back:將元素添加到尾端。
  • push_front:將元素添加到頭部。
  • pop_back:移除尾端的元素。
  • pop_front:移除頭部的元素。
  • size:返回元素的數量。
  • empty:返回是否沒有元素。
  • erase:移除指定位置或範圍的元素。
  • clear:清除所有元素。
  • insert:在指定位置插入新元素。

需要注意的是 list 沒有 find 這個成員函數,如果需要尋找指定元素的話,要用包含在 <algorithm> 裡面的 find 函數。

用法範例

#include <iostream>
#include <list>
using namespace std;

int main() {
    // 建立整數清單
    list<int> li;

    // 新增元素
    li.push_back(2);
    li.push_front(4);
    li.push_back(6);
    li.push_front(4); // 此行執行後li=[4,4,2,6]

    // 在指定位置插入
    li.insert(names.begin() + 1, 5); // 在索引1的地方插入元素,此行執行後li=[4,5,4,2,6]

    // 刪除指定元素(所有符合條件的元素都會被刪除)
    li.remove(4); // 此行執行後li=[5,2,6]

    // 取得大小
    int size = li.size(); // li.size()=3

    // 反轉清單
    li.reverse(); // 此行執行後li=[6,2,5]

    // 排序
    li.sort(); // 由小到大排序,此行執行後li=[2,5,6]

    return 0;
}

適用場景

  • 需要頻繁插入或刪除元素時。
  • 不需要隨機存取資料時。

返回頂端