STL关联式容器之set&multiset

1.set

1.1set的介绍

set的文档介绍
在这里插入图片描述

  1. set是按照一定次序存储元素的容器
  2. 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。
  3. 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。
  4. set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。
  5. set在底层是用二叉搜索树(红黑树)实现的。
  6. set和multiset的区别:set中不允许有重复的元素,multiset中可以有重复的元素

set和map的区别:

  1. 与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放value,但在底层实际存放的是由<value, value>构成的键值对。
  2. set中插入元素时,只需要插入value即可,不需要构造键值对。
  3. set中的元素不可以重复(因此可以使用set进行去重)。
  4. 使用set的迭代器遍历set中的元素,可以得到有序序列。
  5. set中的元素默认按照小于来比较。
  6. set中查找某个元素,时间复杂度为:log2(n)
  7. set中的元素不允许修改

1.2.set的使用

1.2.1 set的模板参数列表

template <class T //T set中存储元素的类型,实际在底层存储<value,value>键对值
          class compare=less<T>//set中元素默认按照小于来比较
          class Alloc=allocator<T>//set中元素的管理方式,使用STL提供的空间适配器管理
          > class set;

T: set中存放元素的类型,实际在底层存储<value, value>的键值对。
Compare: set中元素默认按照小于来比较。
Alloc: set中元素空间的管理方式,使用STL提供的空间配置器管理。

1.2.2 set的构造

函数声明 功能介绍
set (); 构造空的set
set (InputIterator first, InputIterator last); 用[first, last)区间中的元素构造set
set ( const set<Key,Compare,Allocator>& x); set的拷贝构造
set& operator=(const set &st) 赋值运算符重载
#include<iostream>
#include<set>
using namespace std;
void Printset(set<int>& s)
{
   
	for (set<int>::iterator it = s.begin(); it != s.end(); it++)
	{
   
		cout << *it<<" ";
	}
	cout << endl;
}
void test01()
{
   
	int a[] = {
    10,30,40,50,60 };
	set<int> s1(a,a+sizeof(a)/sizeof(a[0]));
	Printset(s1);
	//拷贝构造
	set<int> s2(s1);
	Printset(s2);
	//赋值
	set<int>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值