vector函数使用需要头文件vector
一、初始化:
vector a(10)先给10个空间,不定义也是合法的
vector a(10,1) 10个空间初始化为1
vector a(b) 用向量b拷贝一个向量a
vector a(初指针,末指针)
二、重要函数
a.push_back(item)在最后面放入一个元素
a.pop_back() 删除最后的元素
a.insert(a.begin()+1,3)在第一个元素后面插入3
a.erase(a.begin()+1,a.begin()+3)删除第二个和第三个元素
a.back()返回a最后一个元素 a.front返回a第一个元素 非迭代器 类似队列的操作
a[i]和数组类似,但只能访问,不能修改
a.clear()清空所有元素 a.empty()判断是否为空
a.size()返回a中有多少元素
a.swap(b)a与b向量整体交换

栈 include
stacka
a.top()只有这个函数可以访问栈顶元素
a.pop()删除栈顶元素 a.push(item)加入元素
a.empty()判空 a.size()返回栈的元素个数

队列 include
queuea
a.push(item) a.pop() a.front() a.back() a.size()

优先队列 include
priority_queue<元素类型 容器类型 比较算子>
默认类型为vector 默认算子为less即小的往前排,大的往后排 greater相反
比较算子的写法
1、运算符重载 重新定义 <
struct T;
bool operator<(const T &a,const T &b)
{
return a.value<b.value;
}
2、比较函数申明
struct cmp{
bool operator()(const node &a,const node &b)
{
return a.value>b.value;
}
}

set 数据结构是红黑树 元素都是排好序的,且没有重复元素
set的访问也只能通过迭代器
.begin()
.end()
.erase()
.find()
.clear()
.size()
也能通过重载等改变排列顺序