一、set的定義
set是C++ STL中的容器之一,用於存儲不重複的元素,通常用於快速查找和去重。
二、set的基本特性
set容器中的元素是按照從小到大的順序排列,並且不允許有重複的元素。但是,set並不是完全有序的容器,因為元素的插入和刪除會影響元素在容器中的位置。
代碼示例:
#include #include using namespace std; int main() { set myset; myset.insert(1); myset.insert(3); myset.insert(5); myset.insert(2); myset.insert(4); for(auto it=myset.begin(); it!=myset.end(); it++) { cout << *it << " "; } cout << endl; return 0; } // Output: 1 2 3 4 5
三、有序set(set)
set的默認排序方式是從小到大,也就是說它是有序的。如果我們想要更改排序方式,可以自定義比較函數。
代碼示例:
#include #include using namespace std; bool cmp(int a, int b) { return a > b; } int main() { set myset(cmp); myset.insert(1); myset.insert(3); myset.insert(5); myset.insert(2); myset.insert(4); for(auto it=myset.begin(); it!=myset.end(); it++) { cout << *it << " "; } cout << endl; return 0; } // Output: 5 4 3 2 1
四、無序set(unordered_set)
無序set是C++11新增的容器,它的元素是無序的。雖然插入和刪除操作比有序set快,但是查找操作的時間複雜度較高。
代碼示例:
#include #include using namespace std; int main() { unordered_set myset; myset.insert(1); myset.insert(3); myset.insert(5); myset.insert(2); myset.insert(4); for(auto it=myset.begin(); it!=myset.end(); it++) { cout << *it << " "; } cout << endl; return 0; } // Output: 5 1 2 3 4
五、小結
set是C++ STL中常用的容器之一,有序set的元素是按照從小到大的順序排列,而無序set的元素是無序的。在選擇set容器時,需要根據具體的需求進行選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192071.html