文章目录
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中是否为空。