C++标准模板类STL

【stack】
1.empty() 堆栈为空则返回真
2.pop() 移除栈顶元素
3.push() 在栈顶增加元素
4.size() 返回栈中元素数目
5.top() 返回栈顶元素

【vector】
1.push_back() 在数组的最后添加一个数据
2.pop_back() 去掉数组的最后一个数据
3.at() 得到编号位置的数据
4.begin() 得到数组头的指针
5.end() 得到数组的最后一个单元+1的指针
6.front() 得到数组头的引用
7.back() 得到数组的最后一个单元的引用
8.max_size() 得到vector最大可以是多大
9.capacity() 当前vector分配的大小
10.size() 当前使用数据的大小
11.resize() 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve() 改变当前vecotr所分配空间的大小
13.erase() 删除指针指向的数据项
14.clear() 清空当前的vector
15.rbegin() 将vector反转后的开始指针返回[其实就是原来的end-1]
16.rend() 将vector反转构的结束指针返回[其实就是原来的begin-1]
17.empty() 判断vector是否为空
18.swap() 与另一个vector交换数据

【deque】双端队列,队首队尾都可以入队出队
1.容器大小:deq.size();
2.容器最大容量:deq.max_size();
3.更改容器大小:deq.resize();
4.容器判空:deq.empty();
5.头部添加元素:deq.push_front(const T& x);
6.末尾添加元素:deq.push_back(const T& x);
7.任意位置插入一个元素:deq.insert(iterator it, const T& x);
8.任意位置插入 n 个相同元素:deq.insert(iterator it, int n, const T& x);
9.插入另一个向量的 [forst,last] 间的数据:deq.insert(iterator it, iterator first, iterator last);
10.头部删除元素:deq.pop_front();
11.末尾删除元素:deq.pop_back();
12.任意位置删除一个元素:deq.erase(iterator it);
13.删除 [first,last] 之间的元素:deq.erase(iterator first, iterator last);
14.清空所有元素:deq.clear();
15.下标访问:deq[1]; // 并不会检查是否越界
16.at 方法访问:deq.at(1); // 以上两者的区别就是 at 会检查是否越界,是则抛出 out of range 异常
17.访问第一个元素:deq.front();
18.访问最后一个元素:deq.back();

【queue】队列,队首出 队尾入
1.push(x) 将x压入队尾
2.pop() 弹出队列的第一个元素(队头元素),注意此函数并不返回任何值
3.front() 返回第一个元素(队头元素)
4.back() 返回最后被压入的元素(队尾元素)
5.empty() 当队列为空时,返回true
6.size() 返回队列的长度

【priority_queue】优先队列,自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。
定义:priority_queue<Type, Container, Functional>
Type 就是数据类型。
Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector)。
Functional 就是比较的方式。
当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。
1.top() 访问队头元素
2.empty() 队列是否为空
3.size() 返回队列内元素个数
4.push() 插入元素到队尾 (并排序)
5.emplace() 原地构造一个元素并插入队列
6.pop() 弹出队头元素
7.swap() 交换内容

【map】每个关键字只能在map中出现一次,按关键字字典序排序
1.begin()          返回指向map头部的迭代器
2.clear()         删除所有元素
3.count()          返回指定元素(key)出现的次数(0/1)
4.empty()          如果map为空则返回true
5.end()            返回指向map末尾的迭代器
6.equal_range()    返回特殊条目的迭代器对
7.erase()          删除一个元素
8.find()           查找一个元素 - 返回元素位置指针
9.get_allocator()  返回map的配置器
10.insert()         插入元素
11.key_comp()       返回比较元素key的函数
12.lower_bound()    返回键值>=给定元素的第一个位置
13.max_size()       返回可以容纳的最大元素个数
14.rbegin()         返回一个指向map尾部的逆向迭代器
15.rend()           返回一个指向map头部的逆向迭代器
16.size()           返回map中元素的个数
17.swap()            交换两个map
18.upper_bound()     返回键值>给定元素的第一个位置
19.value_comp()      返回比较元素value的函数

【set】有序去重集合
1.set<int> s    定义一个set容器 类型为int2.begin()         返回指向第一个元素的迭代器
3.clear()          清除所有元素
4.count()         返回某个值元素的个数 0/15.empty()        如果集合为空,返回true
6.end()           返回指向最后一个元素之后的迭代器,不是最后一个元素
7.erase()          删除集合中的元素
8.find()           返回一个指向被查找到元素的迭代器,如果没找到则返回end()
9.insert()          在集合中插入元素
10.size()            集合中元素的数目
11.swap()          交换两个集合变量
12.lower_bound()      返回的是第一个不小于给定元素的元素地址
13.upper_bound()       返回的是第一个大于给定元素的元素地址
set基于红黑树实现,红黑树具有自动排序的功能,因此set内部所有的数据,在任何时候,都是有序的。
unordered_set基于哈希表实现,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。
底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。


【string】
1.=,assign 	赋以新值
2.Swap 	交换两个字符串的内容
3.+ =append( )push_back() 	添加字符
4.insert () 	插入字符
5.erase() 	删除字符
6.clear () 	移除全部字符
7.resize () 	改变字符数量
8.replace() 	替换字符
9.+ 	串联字符串
10.==,! =<<=>>=compare() 	比较字符串内容
11.size()length() 	返回字符数量
12.max_size () 	返回字符的最大可能个数
13.empty () 	判断字符串是否为空
14.capacity () 	返回重新分配之前的字符容量
15.reserve() 	保留内存以存储一定数量的字符
16.[],at() 	存取单一字符
17.>>getline() 	从 stream 中读取某值
18.<< 	将值写入 stream
19.copy() 	将内容复制为一个 C - string
20.c_str() 	将内容以 C - string 形式返回
21.data() 	将内容以字符数组形式返回
22.substr() 	返回子字符串
23.find() 	搜寻某子字符串或字符
24.begin( )end() 	提供正向迭代器支持
25.rbegin()rend() 	提供逆向迭代器支持


【pair】
(1)pair<string,int> p;
p.first="hello";
p.second=3;
(2)pair<int,int> p1(1,2);
(3)pair<string,double> p2;
p2=make_pair("shoes",20.0);

【iterator】
c++ 里面的map容器的迭代器里面 有个first 和 second
map<string, int> m;
m["one"] = 1;
map<string, int>::iterator p = m.begin();
p->first; // 这个是 string 值是 "one"
p->second; //这个是 int 值是 1

【bitset】
bitset容器就是装01串的,所以不用在< >中装数据类型,这和一般的STL容器不太一样。< >中装01串的位数。可以被看作是一个bool数组。它比bool数组更优秀的优点是:节约空间,节约时间,支持基本的位运算。在bitset容器中,8位占一个字节,相比于bool数组4位个字节的空间利用率要高很多。同时,n位的bitset在执行一次位运算的复杂度可以被看作是n/32,这都是bool数组所没有的优秀性质。
(1)count()    数出1的个数
(2)any()    检查bitset容器中全0的情况:全0返回false,至少有一个1返回true
(3)none()     检查bitset容器中全0的情况:全0返回true,至少有一个1返回false
(4)set()    把bitset全部元素置为1set(u,v)把第u位元素变成第v位元素取值(0/1)
(5)reset()    将bitset的所有位置为0reset(k)把第k位元素变成0
(6)flip()    将整个bitset容器按位取反。flip(k)把第k位元素按位取反
bitset<100000> s;    声明一个100000位的bitset




https://zhuanlan.zhihu.com/p/110326987
https://www.cnblogs.com/linuxAndMcu/p/10260124.html
将一个容器创建为另一个容器的拷贝的方法有两种:
可以直接拷贝整个容器。
拷贝由一个迭代器对指定的元素范围(除 array 外)。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值