本文共 1850 字,大约阅读时间需要 6 分钟。
set是C++标准库中常用的一个高效的集合容器,通过实值对元素进行排序和查找操作。它的特点与map数据结构类似,均基于红黑树实现,因此不支持随机访问。
set支持高效的访问和操作,键值对应实值,且键值不能重复。
set的默认排序顺序为从小到大,通过仿函数greater
可以设置为从大到小。
#include#include #include #include using namespace std;void fun(int x) { cout << x << " ";}int main() { cout << "默认从小到大" << endl; set st1; st1.insert(15); st1.insert(12); st1.insert(18); st1.insert(14); for_each(st1.begin(), st1.end(), fun); cout << endl; cout << "从大到小排序" << endl; set
set提供insert
函数用于添加元素。
set支持size()
方法,且没有capacity()
,因为其本质基于链表,迭代器只能进行++
操作。
set支持erase()
和clear()
方法用于删除元素或清空容器。
set支持多种查找方法:
find(elem)
:返回元素的迭代器,找不到则返回end()
。count(elem)
:返回指定元素的个数。lower_bound(elem)
:返回第一个大于等于elem
的元素迭代器。upper_bound(elem)
:返回第一个大于elem
的元素迭代器。multiset是set的扩展版本,允许元素重复。其与set的操作一致,其他性质相同。
map是C++标准库中另一个常用集合容器,键值对保存,键值不能重复。其特点是高效访问,但插入和查找操作较慢。
map的默认排序顺序为从小到大,通过仿函数greater
可以设置为从大到小。
#include#include
map的insert
方法用于添加键值对,传入pair<T, T>
对象或使用仿合作用。
map支持以下查找方法:
find(key)
:返回键值对应的迭代器。count(key)
:返回指定键的个数。lower_bound(key)
:返回第一个大于等于key
的元素迭代器。upper_bound(key)
:返回第一个大于key
的元素迭代器。multimap是map的扩展版本,允许同一个键值对应多个值。其头文件与map相同,且支持count()
操作。
通过以上内容可以看出,set、multiset、map和multimap各有特点,适用于不同的场景。
转载地址:http://pksm.baihongyu.com/