C++ STL 关联容器详解
序列容器与关联容器概述
STL 中的容器主要分为两类。序列式容器(如 vector、list)元素按存储位置顺序排列,通过索引或迭代器访问。关联式容器(如 set、map)通常基于树或哈希表实现,元素间通过键值的有序性或哈希映射建立关联,支持关键字驱动访问。
| 维度 | 序列式容器 | 关联式容器 |
|---|---|---|
| 逻辑结构 | 线性序列(数组、链表等) | 非线性结构(树、哈希表等) |
| 元素关联 | 仅通过位置的顺序关联 | 通过键值的有序或哈希的映射关联 |
| 访问依据 | 存储位置(索引或迭代器) | 关键字(Key) |
| 典型实现 | vector、list、deque | set、map、unordered_set |
set 容器详解
std::set 是关联容器,底层通常由红黑树实现,自动对元素进行排序且不允许重复。
模板参数
template<class T, class Compare = less<T>, class Alloc = allocator<T>>
class set;
T: 元素类型,需支持比较操作。Compare: 比较器,默认less<T>(升序),可自定义仿函数实现降序或其他规则。Alloc: 内存分配器。
常用操作
构造与容量
#include <iostream>
#include <set>
using namespace std;
{
set<> s1;
myints[] = {, , , , };
;
;
cout << << s() << endl;
cout << << (s() ? : ) << endl;
;
}


