一、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/n/192071.html