list
?是 C++ 標準庫中的雙向鏈表容器。
list初始化示例:
#include <list>int n = 7;std::list<int> lst; // 初始化一個空的雙向鏈表 lststd::list<int> lst(n); // 初始化一個大小為 n 的鏈表 lst,鏈表中的值默認都為 0std::list<int> lst{1, 3, 5}; // 初始化一個包含元素 1, 3, 5 的鏈表 lststd::list<int> lst(n, 2); // 初始化一個大小為 n 的鏈表 lst,其中值都為 2
list常用操作示例:
#include <iostream>
#include <list>
using namespace std;int main() {list<int> lst{1, 2, 3, 4, 5}; // 初始化鏈表cout << lst.empty() << endl; // 檢查鏈表是否為空,輸出:falsecout << lst.size() << endl; // 獲取鏈表的大小,輸出:5lst.push_front(0); // 在鏈表頭部插入元素 0lst.push_back(6); // 在鏈表尾部插入元素 6cout << lst.front() << " " << lst.back() << endl; // 獲取鏈表頭部和尾部元素,輸出:0 6lst.pop_front(); // 刪除鏈表頭部元素lst.pop_back(); // 刪除鏈表尾部元素auto it = lst.begin(); // 在鏈表中插入元素advance(it, 2); // 移動到第三個位置lst.insert(it, 99); // 在第三個位置插入 99it = lst.begin(); // 刪除鏈表中某個元素advance(it, 1); // 移動到第二個位置lst.erase(it); // 刪除第二個位置的元素// 遍歷鏈表// 輸出:1 99 3 4 5for (int val : lst) {cout << val << " ";}cout << endl;return 0;
}
?一般情況下,我們在頭部增刪元素會使用雙鏈表,因為他在頭部增刪元素的效率比vector高。但我們通過索引訪問元素時一般會使用vector。