C++ STL 有序关联容器详解
在 C++ 开发中,当需要快速查找唯一元素或统计键值出现次数时,使用数组或列表手动实现往往代码冗长且效率低下。STL(标准模板库)中的关联容器——set、multiset、map 和 multimap,正是为解决这类问题而生的。它们底层通常基于红黑树实现,提供高效的插入、删除和查找操作。
set 容器
set 存储唯一的键值,自动排序。其常用接口如下:
构造函数
最常用的构造方式包括迭代器区间构造、拷贝构造和初始化列表构造:
void test01() {
vector<int> v({4, 5, 2, 9, 6, 8, 3, 1, 7, 7, 7, 7});
set<int> st1(v.begin(), v.end()); // 迭代器区间构造
set<int> st2(st1); // 拷贝构造
set<int> st3({4, 5, 2, 9, 6, 8, 3, 1, 7, 7, 7, 7}); // 初始化列表构造
}
迭代器
返回指向最小元素的迭代器, 指向最后一个元素的后一个位置。由于 底层是平衡二叉搜索树,遍历时天然有序。


