開啟章節選單
set 的使用方式
普通以下內容皆預設使用者引入命名空間 std
set 的特性
- 資料丟進 set 後會自動排序好
- set 中的資料不會重複
- 不支援隨機存取
- 刪除資料與插入資料的複雜度為
- 要使用
std::set
的話要引入標頭檔<set>
初始化
語法
set<int> st_1{1, 2, 3}; set<int> st_2; // 空的 set
插入元素
語法
set<int> st_1; st_1.insert(3); st_1.insert(2); st_1.insert(1); st_1.insert(2); // st_1 : {1, 2, 3}
使用迴圈遍歷 set
因為 set
不支援隨機存取,所以必須使用迭代器才能遍歷這個容器。
語法
set<int> st_1; // 將 1 到 10 丟進 set for(int i = 1; i <= 10; i++) { st_1.insert(i); } // 使用迭代器遍歷 set for(auto it = st.begin(); it != st.end(); it++) { cout << *it << ' '; } // 也可以寫成這樣 for(auto i : st) { cout << i << ' '; }
刪除 set 中的元素
語法
set<int> st_1; st_1.insert(1); st_1.insert(2); st_1.insert(3); // st_1 : {1, 2, 3} st_1.erase(st.begin()); // 使用迭代器刪除 // st_1 : {2, 3} st_1.erase(3); // 使用元素刪除 // st_1 : {2} st_1.clear(); // 刪除 set 中的所有元素
判斷 set 中是否出現特定元素
語法
set<int> st_1; for(int i = 1; i <= 10; i++) { st_1.insert(i); } bool find_2 = st_1.count(2); bool find_15 = st_1.count(15); cout << find_2 << endl; // true cout << find_15 << endl; // false auto it_3 = st_1.find(3); // it_3 為 3 在 st_1 中的迭代器 auto it_12 = st_1.find(12); // it_12 = st.end()
判斷 set 是否是空的
語法
set<int> st_1; bool emp = st_1.empty(); // true st_1.insert(2); emp = st_1.empty(); // false