C++ 資料結構與 STL
資料結構
資料結構用於儲存和組織資料。陣列是資料結構的一個例子,它允許將多個元素儲存在一個變數中。
C++ 還包括許多其他資料結構,每種都以不同的方式處理資料。
這些都是 C++ STL 的一部分,STL 代表 標準 模板 庫。
C++ STL
STL 是一個庫,由不同的資料結構和演算法組成,用於有效地儲存和操作資料。
如果說資料結構儲存資料,那麼演算法就是用來解決不同問題的,通常透過搜尋和操作這些資料結構來解決。
使用正確的資料結構和演算法可以使您的程式執行得更快,尤其是在處理大量資料時。
最常見的資料結構是
資料結構 | 描述 |
---|---|
向量 | 像陣列一樣儲存元素,但大小可以動態改變。元素的新增和刪除通常在末尾進行。可以透過索引訪問元素。 |
List(列表) | 順序儲存元素,每個元素都與下一個元素相連。元素的新增和刪除可以在兩端進行。不能透過索引訪問。 |
棧 | 以特定順序儲存元素,稱為 LIFO(後進先出),元素只能從頂部新增和刪除。不能透過索引訪問。 |
佇列 | 以特定順序儲存元素,稱為 FIFO(先進先出),元素在末尾新增,從前端刪除。不能透過索引訪問。 |
雙端佇列 | 在雙端佇列中儲存元素,元素可以從兩端新增和刪除。可以透過索引訪問元素。 |
Set | 儲存唯一元素。不能透過索引訪問。 |
Map | 以“鍵/值”對的形式儲存元素。可以透過鍵(而不是索引)訪問。 |
使用哪一個取決於您的具體需求。它們共同的一點是,您必須包含相應的標頭檔案才能使用它們
示例
// 包含向量庫
#include <vector>
// 包含列表庫
#include <list>
// 包含集合庫
#include <set>
// 包含對映庫
#include <map>
// 包含棧庫
#include <stack>
// 包含佇列庫
#include <queue>
以下是使用向量的示例,在我們包含 <vector>
庫之後
示例
// 建立一個名為 cars 的 vector,用於儲存字串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 列印 vector 元素
for (string car : cars) {
cout << car << "\n";
}
自己動手試一試 »
接下來的章節將解釋每種資料結構的工作原理以及如何使用它們。
STL 的關鍵概念
STL 的關鍵組成部分包括容器、迭代器和演算法,以及它們之間的關係
在計算機科學中,資料結構和演算法是相輔相成的。如果沒有演算法高效地搜尋或操作資料結構,資料結構就沒什麼價值;如果沒有資料結構可供操作,演算法也幾乎沒什麼價值。
在接下來的章節中,您將看到所有內容是如何相互關聯的。