stl之双端队列deque

来源:互联网 发布:淘宝店铺处罚规则 编辑:程序博客网 时间:2024/05/30 05:41

deque

deque 即双端队列。是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行

deque的优势是从两端快速添加删除,只要不是在中间添加删除,其迭代器都是有效的,如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。

优点:

(1) 随机访问方便,即支持[ ]操作符和vector.at()

(2) 在内部方便的进行插入和删除操作

(3) 可在两端进行push、pop

缺点:

(1) 占用内存多



deque的构造函数

  deque<Elem> c 创建一个空的deque

  deque<Elem> c1(c2) 复制一个deque。

  deque<Elem> c(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。

  deque<Elem> c(n, elem) 创建一个含有n个elem拷贝的deque。

  deque<Elem> c(beg,end) 创建一个以[beg;end)区间的deque。

  ~deque<Elem>() 销毁所有数据,释放内存。

c.size();        //返回当前的元素数量

c.empty();      //判断大小是否为零。等同于c.size() == 0,但可能更快

c.max_size();   //可容纳元素的最大数量

c.at(idx);      //返回索引为idx所标示的元素。如果idx越界,抛出out_of_range

c[idx];        //返回索引idx所标示的元素。不进行范围检查

c.front();      //返回第一个元素,不检查元素是否存在

c.back();       //返回最后一个元素

c.begin();      //返回一个随机迭代器,指向第一个元素

c.end();        //返回一个随机迭代器,指向最后元素的下一位置


c1 = c2         //将c2的所有元素赋值给c1;

c.assign(n , elem);    //将n个elem副本赋值给c

c.assing(beg , end);   //将区间[beg;end]中的元素赋值给c;

c.push_back(elem);   //在尾部添加元素elem

c.pop_back()      //移除最后一个元素(但不回传)

c.push_front()    //在头部添加元素elem

c.pop_front()     //移除头部一个元素(但不回传)

c.erase(pos)     //移除pos位置上的元素,返回一元素位置

                  //如 c.erase( c.begin() + 5)  //移除第五个元素

c.insert(pos , elem); //在pos位置插入一个元素elem,并返回新元素的位置

c.insert(pos , n , elem); //在pos位置插入n个元素elem,无返回值

c.insert(pos , beg , end);

c.resize(num);       //将容器大小改为num。可更大或更小。

c.resize(num , elem);  //将容器大小改为num,新增元素都为 elem

c.clear();            //移除所有元素,将容器清空




————越努力,越幸运BYyingying





原创粉丝点击