STL标准库
#include
vector(向量)
可以理解为动态数组
vector初始化
-
//定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定vectora(10);
-
//定义具有10个整型元素的向量,且给出的每个元素初值为1vectora(10,1);
-
//用向量b给向量a赋值,a的值完全等价于b的值vectora(b);
-
//将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型vectora(b.begin(),b.begin+3);
vector常用函数
vector<int> a,b;
//b为向量,将b的0-2个元素赋值给向量a
a.assign(b.begin(),b.begin()+3);
//a含有4个值为2的元素
a.assign(4,2);
//返回a的最后一个元素
a.back();
//返回a的第一个元素
a.front();
//返回a的第i元素,当且仅当a存在
a[i];
//清空a中的元素
a.clear();
//判断a是否为空,空则返回true,非空则返回false
a.empty();
//删除a向量的最后一个元素
a.pop_back();
//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);
//在a的最后一个向量后插入一个元素,其值为5
a.push_back(5);
//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);
//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);
//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);
//返回a中元素的个数
a.size();
//返回a在内存中总共可以容纳的元素个数
a.capacity();
//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);
//b为向量,将a中的元素和b中的元素整体交换
a.swap(b);
//b为向量,向量的比较操作还有 != >= > <= <
a==b;
注意在插入时只可以使用push_back()而不可以使用下标因为只可以在建立后才可以访问
vector读取
1.可以通过下标直接获取
2.通过迭代器
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
cout<<*it<<" ";
map
可以理解为映射(一对一的关系)键值对
map的初始化
map<typename1,typename2> name ;
map读取
1.通过下标访问
2.通过迭代器访问
for(auto it = mp.begin() ; it !+ mp.end() ; it++)
{
cout<<it->first<<it->second;
}
map常用函数
1.find(key) // 不常用 通过键来找到对应的迭代器
2.erase() // 括号里面可以时迭代器 常和find()函数连用 也可以是key 直接删除键值
3.erase (first,last) // 删除范围内的元素
4.clear() // 清空
unordered_map
map的底层实现原理是红黑树所以搜索速度较慢
如果一道题搜索较多可以用unordered_map
queue
queue初始化
push()唯一一个函数可以用来插入元素
queue常用函数
pop() // 队列中最靠前的元素删除 没有返回值
size() // 返回队列中元素的个数
empty() // 如果空返回true
front() //返回队列中的第一个元素
back() // 返回队列中的最后一个元素
stack
stack初始化
后进先出
stack<typename> name;
stack常用函数
push() // 入栈
top() // 获取栈顶元素
pop() //栈顶元素出栈
empty() //为空返回true
size() // 获取栈内元素的个数
stack常见用法
模拟递归算法的实现
priority_queue
#include
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~
初始化
priority_queue<Type , container , functional>
Tpye //类型container// 容器function//排序方式!!!!!
构造函数
1.普通方法
priority_queue<int> q;
//通过操作,按照元素从大到小的顺序出队
priority_queue<int,vector<int>, greater<int> > q;
//通过操作,按照元素从小到大的顺序出队
2.自定义优先级
struct cmp {
operator bool ()(int x, int y)
{
return x > y; // x小的优先级高
//也可以写成其他方式,
//如: return p[x] > p[y];表示p[i]小的优先级高
}
};
结构体声明方式
struct node {
int x, y;
friend bool operator < (node a, node b)
{
return a.x > b.x; //结构体中,x小的优先级高
}
};
常用函数
top 访问队头元素 !!!! 特别注意访问对头元素是top而不是frontempty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容