由于近期有考试反映出一些学的时候觉得没什么用结果还是有很大用处的东西真的很重要
STL-set
[自用简单版阐述]集合容器,快速检索,不可用去修改键值。
set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。
(我现在所知道的)操作:
对功能的理解要仔细和擅长运用。
函数 | 功能 |
---|---|
set<T> st | set默认构造函数 |
mulitset<T> mst | multiset默认构造函数 |
set(const set &st) | 拷贝构造函数 |
set& operator=(const set &st) | 重载等号操作符 |
swap(st) | 交换两个集合容器【这里有一个疑问:void swap (set& x); 交换两个set的内容】额,在我的想象中应该是写两个set进行交换,但是看网上的各种文献好像都只写了一个参数? |
size() | 返回容器中元素的数目 |
max_size() | 返回set容器可能包含的元素最大个数 |
empty() | 判断容器收为空 |
insert(elem) | 在容器中插入元素 |
clear() | 清除所有元素 |
erase(pos) | 删除pos迭代器所指的元素,返回下一个元素的迭代器 |
erase(beg, end) | 删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器 |
erase(elem) | 删除容器中值为elem的元素 |
find(key) | 查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end() |
count(key) | 查找键key的元素个数【这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。】 |
lower_bound(keyElem) | 返回最后一个key<=keyElem元素的迭代器 |
upper_bound(keyElem) | 返回第一个key>keyElem元素的迭代器 |
equal_range(keyElem) | 返回容器中key与keyElem相等的上下限的两个迭代器,这两个迭代器被放在对组(pair)中 |
begin() | 返回set容器的第一个元素 |
end() | 返回set容器的最后一个元素 |
反向遍历(基本不用):
函数 | 功能 |
---|---|
rbegin() | 要用到利用反向迭代器reverse_iterator |
rend() | 同上,即把 |
注:
关于erase:
set中的删除操作是不进行任何的错误检查的,比如定位器的是否合法等等,所以用的时候自己一定要注意。
(昨天最后一题一直没想出来的60分实现可以考虑 栈 ?)