【STL】set,multiset,unordered_set用法总结



1.set(红黑树有序去重)和multiset(红黑树有序不去重)的常用方法

#include<set>          //set 的头文件 

    set<int> s;        //声明一个int型set变量,名为s 
	s.empty()          //判定 s 是否为空 
	s.insert(1);       //把数字1插入到s中 
	s.clear();         //清空s 
	s.begin();         //返回s中第一个元素地址  所以 *s.begin() 
	s.end();           //返回s中最后一个元素地址  
                       //这个特殊一点,返回的是s中最后一个元素的下一个元素 
                       //所以  *(--s.end())是s最后一个元素 
	s.rbegin();        //rbegin是逆向的第一个地址相当于(--s.end())此处取的已经是最后一个元素 
	s.rend();          //rend可以看做逆向的最后一个地址  相当于 s.begin() 
	s.count(1);        //计算s中1出现的次数,而次数只存在0与1,所以可以借来查找是否存在1 
	s.size();          //返回s中元素的个数 
	s.max_size();      //s最大能存元素的数目 
	s.find(2);        //查找2 

  	set<int>::iterator iter;    //迭代器
	erase(iterator)       //删除定位器iterator指向的值
	erase(first,second),  //删除定位器first和second之间的值
	erase(key_value)      //删除键值key_value的值


(1)构造函数和析构函数

set c:创建空集合,不包含任何元素
set c(op):以op为排序准则,产生一个空的set
set c1(c2):复制c2中的元素到c1中
set c(const value_type first, const value_type last):复制[first, last)之间元素构成新集合
set c(const value_type first, const value_type last,op):以op为排序准则,复制[first, last)之间元素构成新集合。
c.~set()销毁所有元素,释放内存

multiset mc:创建空集合,不包含任何元素
multiset mc(op):以op为排序准则,产生一个空的set
multiset c1(c2):复制c2中的元素到c1中
multiset c(const value_type first, const value_type last):复制[first, last)之间元素构成新集合
multiset c(const value_type first, const value_type last,op):以op为排序准则,复制[first, last)之间元素构成新集合。
c.~set()销毁所有元素,释放内存


(2)大小,判空函数

int size() const:返回容器元素个数
bool empty() const:判断容器是否为空,若返回true,表明容器已空


(3)增删函数

pair<iterator,bool> insert( x):插入元素x
iterator insert(iterator it,x):在迭代器it处插入元素x
void insert(const value_type *first,const value_type *last):插入[first, last)之间元素
iterator erase(iterator it):删除迭代器指针it处元素
iterator erase(iterator first,iterator last):删除[first, last)之间元素
size_type erase(const Key& key):删除元素值等于key的元素


(4)遍历函数

iterator begin():返回首元素的迭代器指针
iterator end():返回尾元素的迭代器指针
reverse_iterator rbegin():返回尾元素的逆向迭代器指针
reverse_iterator rend():返回首元素前一个位置的迭代器指针


(5)操作函数

const_iterator lower_bound(const Key& key):返回容器中大于等于key的迭代器指针
const_iterator upper_bound(const Key& key):返回容器中大于key的迭代器指针
int count(const Key& key) const:返回容器中元素等于key的元素的个数
pair<const_iterator,const_iterator> equal_range(const Key& key) const:返回容器中元素值等于key的迭代指针[first, last)
const_iterator find(const Key& key) const:查找功能,返回元素值等于key的迭代器指针
void swap(set& s):交换集合元素
void swap(multiset& s):交换多集合元素


2.unordered_set(哈希表无序去重)的常用方法

(1)构造函数

std::unordered_set< std::string > c:初始化容器;
std::unordered_set< std::string > c{ “aaa”, “bbb”, “ccc” }:初始化容器,并将"aaa", “bbb”, "ccc"加入到容器中;
std::unordered_set< std::string > c{ 16 }:初始化容器,并设置16个桶;


(2)插入函数

c.insert(“dddd”):向容器添加元素”dddd";
a.insert({ “aaa”,“bbbb”,“cccc” }):向容器添加元素"aaa",“bbbb”,“cccc”;
a.insert(b.begin(), b.end()):b是一个存储着和a相同类型元素的向量,可将b中所有元素添加到a中。


(3)查找函数

a.find(“ee”):查找元素"ee",返回结果为a.end()则表明没有找到,否则返回所对应元素;
a.count(“ee”):查找元素"ee"在a中有几个(由于unordered_set中没有相同的元素,所以结果通常为0或1)


(4)清除元素

a.clear():清除a中所有元素;
a.erase(“aaa”):清除元素"aaa"。


(5)统计函数

a.size():返回a中总的元素个数;
a.max_size():返回a中最大容纳元素;
a.empty():判断a中是否为空。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值