C++ 列表
C++ 列表
列表在儲存相同型別的多個元素和動態增長大小方面,與 vector 相似。
然而,列表和 vector 之間有兩個主要區別:
- 您可以從列表的開頭和結尾新增和刪除元素,而 vector 通常針對末尾的新增和刪除進行最佳化。
- 與 vector 不同,列表不支援隨機訪問,這意味著您不能直接跳轉到特定索引,或透過索引號訪問元素。
要使用列表,您必須包含 <list>
標頭檔案
// 包含 list 庫
#include <list>
建立列表
要建立列表,請使用 list
關鍵字,並在尖括號 <>
中指定它應儲存的值的型別,然後是列表的名稱,例如:list<type> listName
。
示例
// 建立一個名為 cars 的列表,它將儲存字串
list<string> cars;
如果您想在宣告時就新增元素,請將它們放在花括號 {}
中,用逗號分隔的列表中
示例
// 建立一個名為 cars 的列表,它將儲存字串
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 列印列表元素
for (string car : cars) {
cout << car << "\n";
}
自己動手試一試 »
注意:列表的型別(我們示例中的 string
)在聲明後不能更改。
訪問列表
您不能像訪問陣列和 vector 那樣透過索引號來訪問列表元素。
但是,您可以使用 .front()
和 .back()
函式分別訪問第一個或最後一個元素
示例
// 建立一個名為 cars 的列表,它將儲存字串
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 獲取第一個元素
cout << cars.front(); // 輸出 Volvo
// 獲取最後一個元素
cout << cars.back(); // 輸出 Mazda
自己動手試一試 »
更改列表元素
您也可以使用 .front()
和 .back()
函式更改第一個或最後一個元素的值
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 更改第一個元素的值
cars.front() = "Opel";
// 更改最後一個元素的值
cars.back() = "Toyota";
cout << cars.front(); // 現在輸出 Opel 而不是 Volvo
cout << cars.back(); // 現在輸出 Toyota 而不是 Mazda
自己動手試一試 »
新增列表元素
要向列表中新增元素,您可以使用 .push_front()
在列表開頭插入元素,並使用 .push_back()
在列表末尾新增元素
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 在開頭新增一個元素
cars.push_front("Tesla");
// 在末尾新增一個元素
cars.push_back("VW");
自己動手試一試 »
移除列表元素
要從列表中移除元素,請使用 .pop_front()
從列表開頭移除一個元素,並使用 .pop_back()
從列表末尾移除一個元素
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 移除第一個元素
cars.pop_front();
// 移除最後一個元素
cars.pop_back();
自己動手試一試 »
列表大小
要了解列表有多少個元素,請使用 .size()
函式
檢查列表是否為空
使用 .empty()
函式來查詢列表是否為空。
.empty()
函式在列表為空時返回 1
(true),否則返回 0
(false)
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty(); // 輸出 0 (非空)
自己動手試一試 »
迴圈遍歷列表
您不能使用傳統的 for
迴圈結合 .size()
函式來遍歷列表元素,因為無法透過索引訪問列表中的元素
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.size(); i++) {
cout << cars[i] << "\n";
}
遍歷列表最簡單的方法是使用 **for-each** 迴圈
示例
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
自己動手試一試 »
提示:您也可以使用 迭代器 來遍歷列表,這將在後續章節中詳細介紹。