目录
描述
std::set
template <class T, class Compare = less<T>, class Alloc = allocator<T>> class set;
set集合是按特定顺序存储唯一元素的容器。
在set中,元素的值也标识它(值本身是key,类型为T),并且每个值必须是唯一的。set中元素的值不能在容器中被修改(元素总是常量),但可以插入或从容器中删除它们。
在内部,set中的元素总是按照其内部比较对象(Compare类型)指示的特定严格弱排序标准进行排序。
set容器通常比unordered_set容器通过key访问单个元素的速度慢,但是它们允许基于其顺序对子集进行直接迭代。
set的典型实现为二进制搜索树。
容器属性(Container properties)
- Associative
关联容器中的元素由其key引用,而不是由其在容器中的绝对位置引用。 - Ordered
容器中的元素始终遵循严格的顺序。所有插入的元素都按此顺序给定一个位置。 - Set
元素的value也是用来标识它的key。 - Unique keys
容器中的任何两个元素都不能有等价的key。 - Allocator-aware
容器使用分配器对象动态处理其存储需求。
成员类型(Member types)
| 成员类型 | 定义 | 备注 |
|---|---|---|
| key_type | 第一个模板参数(T) | |
| value_type | 第一个模板参数(T) | |
| key_compare | 第二个模板参数(Compare) | 默认为:less<key_type> |
| value_compare | 第二个模板参数(Compare) | 默认为:less<value_type> |
成员函数(Member functions)
构造函数:
// constructing sets
#include <iostream>
#include <set>
bool fncomp(int lhs, int rhs) {
return lhs < rhs;
}
struct classcomp {
bool operator() (const int& lhs, const int& rhs) const {
return lhs < rhs;
}
};
int main() {
std::set<int> first;// empty set of ints
int myints[] = {
10,20,30,40,50 };
std::set<int> second(myints, myints + 5);// range
std::set<int> third(second);// a copy of second
std::set<int> fourth(second.begin(), second.end());// iterator ctor.
std::set<int, classcomp> fifth;// class as Compare
bool(*fn_pt)(int, int) = fncomp;
std::set<int, bool(*

本文详细介绍了C++ STL中的set容器,包括其特性和用法。解释了set如何存储唯一且有序的元素,并提供了构造函数、修改器、观察者及操作等成员函数的实例。
最低0.47元/天 解锁文章
8282





