一、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
微信掃一掃
支付寶掃一掃