目录
deque容器基本知识
deque容器为双端数组 即两端都有开口的
deque容器的vector容器的区别
- 对于头部的插入删除操作,vector容器效率低于deque函数
- vector容器访问元素效率高于deque
deque容器构造函数
函数原型:
1 deque<T>//默认构造函数
2 deque(begin,end);//迭代器 将[begin,end)内元素拷贝到新容器中
3 deque( n , elem);//n个elem数据填入deque容器
4 deque( const deque& deq);//拷贝构造函#include <iostream> using namespace std; #include <deque> int main() { //一 deque<int> v1; //二 deque<int>v2(v1.begin(), v1.end()); //三 deque<int>v3(5, 100); //四 deque<int>v4(v3); return 0; }
deque容器赋值操作
函数原型:
1 deque& operator = const vector& vec;// 等号运算符重载
2 assign(begin,end);//迭代器
3 assign(int n , elem);//同上#include <iostream> using namespace std; #include <deque> int main() { //给v1 v2赋初值 deque<int>v1; for (int i = 0; i < 4; i++) { v1.push_back(i); } deque<int>v2; for (int i = 0; i < 4; i++) { v2.push_back(i + 4); } //一 v1 = v2; //二 v1.assign(v2.begin(), v2.end()); //三 v1.assign(5, 100); return 0; }
获取deque容器大小
函数原型:
1 bool empty(); //空返回true 否则返回false
2 int size(); //返回元素数量
3 resize(int num); //预留空间
预留空间大于原来容器空间大小则扩充空间,且自动填充0
否则删除后面的元素
4 resize(int num , elem);//同上 elem为填充值
#include <iostream> using namespace std; #include <deque> int main() { //给v1 v2赋初值 deque<int>v1; for (int i = 0; i < 4; i++) { v1.push_back(i); } //一 cout << v1.empty() << endl;//结果为false(0) //二 cout << v1.size() << endl;//结果为4 //三 v1.resize(8); //四 v1.resize(9, 10);//预留大小为9 若多出位置则填充9 //自定义类型也这样写 对象属性都填充为9 return 0; }
deque容器插入删除操作
函数原型:
两端的操作
1 void push_front(T n);//从头插入
2 void push_back(T n);//从尾插入3 void pop_front(); //从头删除
4 void pop_back(); //从尾删除对其他位置操作
5 insert(const iterator pos , elem); //将elem插入到pos位置
6 insert(const iterator pos , int count , elem); //将count个elem插入到pos位置
7 insert(const iterator begin,const iterator begin1 , const iterator end1);//在begin处插入另一个容器内[begin1,end1)的元素
8 erase(const iterator pos); //删除指定位置元素
9 erase(const iterator start , const iterator end); //删除指定位置范围内的元素[start,end)10 clear(); //清空容器所有元素
#include <iostream> using namespace std; #include <deque> int main() { //给v1 v2赋初值 deque<int>v1; //一 v1.push_front(10); //二 v1.push_back(10); //三 v1.pop_front(); //四 v1.pop_back(); //五 v1.insert(v1.begin() + 1 , 100); //六 v1.insert(v1.begin(), 5, 10);//在begin处插入5个10 //七 deque<int>v2; v2.push_back(10); v2.push_back(10); v2.push_back(10); v1.insert(v1.begin(), v2.begin(), v2.end()); //八 v1.erase(v1.begin()); //九 v1.erase(v1.begin() + 1, v1.end());//删除v1的[begin()+1,v1.end())范围元素 //十 v1.clear(); return 0; }
对deque容器数据存储操作
函数原型:
1 at(int Index);
2 operator[];
3 front(); 返回容器的第一个元素
4 back(); 返回容器中最后一个元素
#include <iostream> using namespace std; #include <deque> int main() { //给v1 v2赋初值 deque<int>v1; for (int i = 0; i < 4; i++) { v1.push_back(i);//给v1赋值 } //一 cout << v1.at(0) << endl;//0 //二 cout << v1[1] << endl; //1 //三 cout << v1.front() << endl;//0 //四 cout << v1.back() << endl;//3 return 0; }
对deque容器排序
sort(const iterator begin, const iterator end);//默认为升序
#include <iostream> using namespace std; #include <deque> #include <algorithm> int main() { //给v1 v2赋初值 deque<int>v1; v1.push_back(9); v1.push_back(7); v1.push_back(11); v1.push_back(5); sort(v1.begin(), v1.end()); return 0; }