STL 应用
目录
目录
.empty() : 判断容器是否为空, 返回值为 bool 型
栈只用记住四个字:先进后出!!!先进后出!!!先进后出!!!
队列只用记住四个字:先进先出!!!先进先出!!!先进先出!!!
容器通用函数:
.size() : 容器内元素个数
.empty() : 判断容器是否为空, 返回值为 bool 型
.front(): 返回容器第一个元素
.back() : 返回容器最后一个元素
.begin() : 返回容器第一个元素的指针
.end() : 返回容器最后一个元素的指针
.swap(b) : 交换两个容器的内容
:: iterator : 迭代器
进入正题
1. vector (动态数组)
动态数组 顾名思义就是封装了动态大小数组的顺序容器。其中所有元素按照线性顺序排序。可直接访问第几位。
注意:动态数组的下标从 0 开始。
1.创建
vector <T> a;
vector <T> a(100);
vector <T> a[15]; // 二维数组
2.添加
a.push_back(x);
a.insert(a.begin() + 1, x); // 在 a.begin() 指向元素 前 插入一个 x
3.删除
a.pop_back();
2. 栈
很多人都觉得 栈 非常的难, 但是只要你理解了 它 的思维,写起来一点也不难。
栈只用记住四个字:先进后出!!!先进后出!!!先进后出!!!
操作
1. stack<T> s;
2. .push(x);
3. .pop();
4. .top();
5. .empty()
6. .size()
(具体都是啥我不用讲了吧)上图!
推荐习题 : 表达式括号匹配 - 洛谷
3. 队列(queue)
队列只允许从队尾入队,从队首出队。 就像 排队接水。
队列只用记住四个字:先进先出!!!先进先出!!!先进先出!!!
操作
1. queue<int> q;
2. .push(x);
3. .pop();
4. .top();
5. .empty()
6. .size()
(具体都是啥我又不用讲了吧 )
4.set
关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。
注意:
1、set中的元素都是排好序的
2、set集合中没有重复的元素
操作
1. set<int> s;
2. .insert(x);
3. .erase();
4. .find();
5. .empty()
6. .count()
7. .clear()
8. lower_bound / upper_bound