vector是只开后端口,在头部插入数据效率很低.
deque是双向开口,头尾都可以插入元素
vector实现原理:
(1) 申请更大空间 (2)原数据复制新空间 (3)释放原空间
deque实现原理:
deque使用map作为容器(指针数组),每个指针指向缓冲区(另一段连续的内存空间)
构造
函数 | 描述 |
---|---|
deque deqT; | 默认构造形式 |
deque(beg, end); | 将[beg, end)区间中的元素拷贝给本身。 |
deque(n, elem); | 将n个elem拷贝给本身。 |
deque(const deque &deq); | 拷贝构造函数。 |
函数 | 描述 |
---|---|
assign(beg, end); | 将[beg, end)区间中的数据拷贝赋值 |
assign(n, elem); | 将n个elem拷贝赋值 |
deque& operator=(const deque &deq); | 重载等号操作符 |
swap(deq); | 缩减容量 |
deque.size(); | 元素个数 |
deque.empty(); | 是否为空 |
deque.resize(num); | 设置deque大小,多余默认填充,少于删除 |
deque.resize(num, elem); | 设置deque大小,多余elem填充,少于删除 |
push_back(elem); | 尾部添加 |
push_front(elem); | 头部添加 |
pop_back(); | 尾部删除 |
pop_front(); | 头部删除 |
at(idx); | 索引,抛出异常 |
operator[]; | 索引,报错 |
front(); | 返回第一个数组 |
back(); | 返回最后一个数据 |
insert(pos,elem); | pos位置插入elem |
insert(pos,n,elem); | pos位置插入n个elem |
insert(pos,beg,end); | pos位置插入[beg,end)区间的数据 |
clear(); | 清空容器 |
erase(beg,end); | 删除[beg,end)区间的数据,返回下一个数据的位置。 |
erase(pos); | 删除pos位置的数据,返回下一个数据的位置。 |