文章目录
C++ STL set
容器
set
的底层机制
set
的底层实现是红黑树(RB-tree)。红黑树是一种自平衡的二叉搜索树,它确保元素有序并支持高效的查找、插入和删除操作。
set
的特点
- 元素有序:
set
会自动根据键值的顺序排列元素,保证元素是有序的。 - 元素唯一:
set
不允许插入重复元素,因此每个元素在集合中是唯一的。
set
的迭代器
由于 set
的底层实现是红黑树,其迭代器被定义为红黑树的 const_iterator
类型,因此无法通过迭代器修改元素的值。
set
类模板定义
template <class _Key, class _Compare, class _Alloc> class set { private: typedef _Rb_tree<key_type, value_type, _Identity<value_type>, key_compare, _Alloc> _Rep_type; // set 的底层实现为 RB-tree _Rep_type _M_t; // 红黑树表示 set typedef typename _Rep_type::const_iterator iterator; // iterator 的类型为 const_iterator };
set
的总结
- 元素有序:插入的元素会根据键值自动排序。
- 元素不能重复:
set
中的元素是唯一的,插入相同的元素会被忽略。
示例代码
插入和查找元素
#include <iostream> #include <set> int main() { std::set<int> mySet; // 插入元素 mySet.insert(1); mySet.insert(3); mySet.insert(2); // 查找元素 if (mySet