Deque容器介绍

Deque简介

deque:['dek]

  • deque(double-ended-queue)也是STL的容器,deque是双端数组,而vector是单端动态数组的;
  • deque的接口和vector很类似,在多数操作上可直接替换;
  • deque可随机存取元素,支持索引值直接存取,用[]操作符或at()方法;
  • deque头部和尾部添加或移除元素非常快,在中部插入或移除元素较费时;

头文件:

#include
deque构造函数 功能
deque(); 默认构造函数
deque(n,elem); 带参构造函数
deque(const vector&vec); 拷贝构造函数
deque(deque_iterator_begin,deque_iterator_end); 迭代器拷贝构造

deque对象的默认构造函数

deque采用模板类实现,deque对象默认构造形式

deque<T>deqT;
//存放int的deque容器
deque<int>deqInt;
//存放float的deque容器
deque<float>deqFloat;
//存放string的deque容器
deque<string>deqString;
//尖括号内可设置指针类型或自定义类型

deque对象的带参构造

//构造函数将[begin,end)区间中的元素拷贝给本身,区间为左开右闭
deque<int> deq1,deq2;
deq1(10);
deq2(deq1.begin(),deq1.end());
//构造函数将n个elem拷贝给自身
deque(n,elem);
//拷贝构造函数
deque(const deque &deq);

deque末尾的添加移除操作

//在容器尾部添加一个数据
deque.push_back(elem);
//在容器头部插入一个数据
deque.push_front(elem);
//删除容器最后一个数据
deque.pop_back();
//删除容器内第一个数据
deque.pop_front();

deque的数据存取

//返回索引idx所指的数据,如果idx越界,抛出out_of_range
deque.at(idx);
//返回索引idx所指的数据,若idx越界,不抛出异常,直接出错
deque[idx];
//返回第一个数据
deque.front();
//返回最后一个数据
deque.back();

deque与迭代器

//返回容器中第一个元素的迭代器
deque.begin();
//返回容器中最后一个之后的迭代器
deque.end();
//返回容器中倒数第一个元素的迭代器
deque.rbegin();
//返回容器中倒数最后一个元素之后的迭代器
deque.rend();

## deque的赋值

```cpp
//将[begin,end)区间中的数据拷贝赋值给本身,区间左开右闭
deque.assign(begin,end);
//将n个elem拷贝赋值给本身
deque.assign(n,elem);
//重载等号操作符
deque& operator=(const deque &deq);
//将vec与本身的元素互换
deque.swap(deq);

deque的大小

//返回容器中元素的个数
deque.size();
//判断容器是够为空
deque.empty();
//重新指定容器的长度为num,若容器变长,则以默认值填充新位置,若容器变短,则末尾超出容器长度的元素被删除
deque.resize(num);
//重新指定容器的长度为num,若容器变长,则以elem值填充新位置,若容器变短,则末尾超出容器长度的元素被删除
deque.resize(num,elem);

deque的插入

//在pos位置插入一个elem元素的拷贝,返回新数据的位置
deque.insert(pos.elem);
//在pos位置插入n个elem数据,无返回值
deque.insert(pos,n,elem);
//在pos位置插入[begin,end)区间数据,无返回值
deque.insert(pos,begin,end);
//如:
deque<int>deq1,deq2;
deq2.insert(pos,deq1.begin(),deq1.end());

deque的删除

//删除容器内所有数据
deque.clear();
//删除[begin,end)区间的书籍,返回下一个数据的位置
deque.erase(begin,end);
//删除pos位置的数据,返回下一个数据的位置
deque.erase(pos);

你可能感兴趣的:(C++)