STL之deque函数详解
来源:互联网 发布:seo是干嘛的 编辑:程序博客网 时间:2024/05/17 20:29
#include <deque>
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似
函数描述c.assign(beg,end)
c.assign(n,elem)将[beg; end)区间中的数据赋值给c。
将n个elem的拷贝赋值给c。c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range。c.back()传回最后一个数据,不检查这个数据是否存在。c.begin()传回迭代器重的可一个数据。c.clear()移除容器中所有数据。deque<Elem> c
deque<Elem> c1(c2)
Deque<Elem> c(n)
Deque<Elem> c(n, elem)
Deque<Elem> c(beg,end)
c.~deque<Elem>()创建一个空的deque。
复制一个deque。
创建一个deque,含有n个数据,数据均已缺省构造产生。
创建一个含有n个elem拷贝的deque。
创建一个以[beg;end)区间的deque。
销毁所有数据,释放内存。c.empty()判断容器是否为空。c.end()指向迭代器中的最后一个数据地址。c.erase(pos)
c.erase(beg,end)删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。c.front()传回地一个数据。get_allocator使用构造函数返回一个拷贝。c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)在pos位置插入一个elem拷贝,传回新数据位置。
在pos位置插入>n个elem数据。无返回值。
在pos位置插入在[beg,end)区间的数据。无返回值。c.max_size()返回容器中最大数据的数量。c.pop_back()删除最后一个数据。c.pop_front()删除头部数据。c.push_back(elem)在尾部加入一个数据。c.push_front(elem)在头部插入一个数据。c.rbegin()传回一个逆向队列的第一个数据。c.rend()传回一个逆向队列的最后一个数据的下一个位置。c.resize(num)重新指定队列的长度。c.size()返回容器中实际数据的个数。C1.swap(c2)
Swap(c1,c2)将c1和c2元素互换。
同上操作。
c.assign(n,elem)将[beg; end)区间中的数据赋值给c。
将n个elem的拷贝赋值给c。c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range。c.back()传回最后一个数据,不检查这个数据是否存在。c.begin()传回迭代器重的可一个数据。c.clear()移除容器中所有数据。deque<Elem> c
deque<Elem> c1(c2)
Deque<Elem> c(n)
Deque<Elem> c(n, elem)
Deque<Elem> c(beg,end)
c.~deque<Elem>()创建一个空的deque。
复制一个deque。
创建一个deque,含有n个数据,数据均已缺省构造产生。
创建一个含有n个elem拷贝的deque。
创建一个以[beg;end)区间的deque。
销毁所有数据,释放内存。c.empty()判断容器是否为空。c.end()指向迭代器中的最后一个数据地址。c.erase(pos)
c.erase(beg,end)删除pos位置的数据,传回下一个数据的位置。
删除[beg,end)区间的数据,传回下一个数据的位置。c.front()传回地一个数据。get_allocator使用构造函数返回一个拷贝。c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)在pos位置插入一个elem拷贝,传回新数据位置。
在pos位置插入>n个elem数据。无返回值。
在pos位置插入在[beg,end)区间的数据。无返回值。c.max_size()返回容器中最大数据的数量。c.pop_back()删除最后一个数据。c.pop_front()删除头部数据。c.push_back(elem)在尾部加入一个数据。c.push_front(elem)在头部插入一个数据。c.rbegin()传回一个逆向队列的第一个数据。c.rend()传回一个逆向队列的最后一个数据的下一个位置。c.resize(num)重新指定队列的长度。c.size()返回容器中实际数据的个数。C1.swap(c2)
Swap(c1,c2)将c1和c2元素互换。
同上操作。
deque 需要分配空间 如果你的插入超过了 deque暂时的空间容量 就会重新分配一个更大的空间给deque 所以较queue会慢
/*deque: 是一个double-ended queue,
1)支持随即存取,也就是[]操作符,
2)支持两端操作,push(pop)-back(front),在两端操作上与list效率差不多
因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则:
1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。
*/
http://blog.csdn.net/morewindows/article/details/6946811
参考代码来自上面的地址
//双向队列 deque//by MoreWindows http://blog.csdn.net/morewindows#include <deque>#include <cstdio>#include <algorithm>using namespace std;int main(){deque<int> ideq(20); //Create a deque ideq with 20 elements of default value 0deque<int>::iterator pos;int i;//使用assign()赋值 assign在计算机中就是赋值的意思for (i = 0; i < 20; ++i)ideq[i] = i;//输出dequeprintf("输出deque中数据:\n");for (i = 0; i < 20; ++i)printf("%d ", ideq[i]);putchar('\n');//在头尾加入新数据printf("\n在头尾加入新数据...\n");ideq.push_back(100);ideq.push_front(i);//输出dequeprintf("\n输出deque中数据:\n");for (pos = ideq.begin(); pos != ideq.end(); pos++)printf("%d ", *pos);putchar('\n');//查找const int FINDNUMBER = 19;printf("\n查找%d\n", FINDNUMBER);pos = find(ideq.begin(), ideq.end(), FINDNUMBER);if (pos != ideq.end())printf("find %d success\n", *pos);elseprintf("find failed\n");//在头尾删除数据printf("\n在头尾删除数据...\n");ideq.pop_back();ideq.pop_front();//输出dequeprintf("\n输出deque中数据:\n");for (pos = ideq.begin(); pos != ideq.end(); pos++)printf("%d ", *pos);putchar('\n');return 0;}
- STL之deque函数详解
- STL之deque函数详解
- STL之deque详解
- C++ STL之deque详解
- STL之deque容器详解
- STL之deque用法详解
- STL之deque容器详解
- STL 之 deque容器详解
- STL之deque容器详解
- STL之deque容器详解
- STL之三:deque用法详解
- STL之deque容器用法详解
- STL之三:deque用法详解
- [容器]STL之deque容器详解
- STL之三:deque用法详解
- STL之三:deque用法详解
- STL:deque用法详解
- stl deque使用详解
- os.path----平台独立的文件名管理
- GDAL API入门
- 冯诺依曼计算机
- 笔记之数据结构之线性结构
- 探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
- STL之deque函数详解
- 9200.16384.WIN8_RTM.120725-1247_X64FRE_CLIENT_ZH-CN-HRM_CCSA_X64FRE_ZH-CN_DV5序号
- 建大顶堆和小顶堆及堆排序算法
- java 命名规范
- 旧日志整理一:我的3句座右铭
- 字符串排序
- linux终端图形编程方法
- The markup in the document preceding the root element must be well-formed
- Window平台使用VS2010简单快速搭建QT开发环境