# STL容器 以下只列出常用的容器,且皆需輸入對應函式庫,打出#include <對應名稱> 。 ```cpp #include <stack> ``` 建立容器方法都是打出對應名稱<容器資料類型> 容器名稱。 ```cpp stack<int> stack_a; ``` ## stack 中文名稱是**堆疊**,就是將資料從上到下一個個放入,也只能從上面一個個取走。 舉例:把盤子疊起來後,只能從最上方拿走盤子,不然會破掉。 | 程式碼 | 功能 | | -------- | -------- | | push(資料) | 放入資料 | | top() | 讀取最上方的資料 | | pop() | 刪除最上方的資料 | | empty() | 判斷容器是否是空的,空的回傳1,有內容回傳0 | | size() | 回傳容器資料數 | ## queue 中文名稱是**佇列**,就是將資料從上方一個個放入,取出時只能從下方一個個取走。 舉例:排隊時只能從後方排堆,最先排的最先走,不能插隊。 | 程式碼 | 功能 | | -------- | -------- | | push(資料) | 放入資料 | | top() | 讀取最上方的資料 | | pop() | 刪除最上方的資料 | | empty() | 判斷容器是否是空的,空的回傳1,有內容回傳0 | | size() | 回傳容器資料數 | ::: success 用法跟stack一樣 ::: ## vector 用法幾乎跟陣列一樣,當無法在建立陣列時決定陣列大小即可使用 | 程式碼 | 功能 | | -------- | -------- | | push_back(資料) | 放入資料在最後面 | |size()|回傳容器資料數| ## set set是一種集合,不會有重複資料,且set內容不可被修改,只能新增或刪除資料。set會自動排序容器內資料,不能修改或指定資料位置,但是不代表資料沒有順序。 可以在新增容器時就添加資料 ```cpp set<int> set_a{1,2,3,4,5}; ``` | 程式碼 | 功能 | | -------- | -------- | |insert(資料)|新增資料| |erase(資料)|移除資料| |begin()|回傳set一開始的迭代器(iterator)| |end()|回傳set尾部的迭代器| |a.find(資料)|尋找資料,並回傳該資料的迭代器,若不存在則回傳end # 其他容器 輸入utility函式,內部有名為pair的容器 ## pair 此類型容器能一次包含兩個變數,建立方式(無預設值)是pair <變數類型, 變數類型> 名稱,例如 ```cpp pair <int, string> p; ``` 如需預設值在名稱後加括弧即可 ```cpp pair <int, string> p(90, name); ``` 常見的用法也可以建立陣列類型的pair ```cpp pair <int, int> p[5]; ``` 需要取值的話直接.first或.second即可 若要比較pair,則有兩種狀況 1. ==和!= 2. >, <, >=, <= 第一種他會同時比較first和second兩個值,同時達成回傳true,否則回傳false 第二種他會先比較第一個值,如果否定在比較另一個值