C++ STL之deque
来源:互联网 发布:千千自动发卡源码 编辑:程序博客网 时间:2024/05/17 18:12
1、Deque 容器
deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。
使用deque容器之前必须加上头文件:#include;
deque属于std命名域的内容,因此需要通过命名限定:using std::deque;也可以直接使用全局的命名空间方式:using namespace std;
2、构造函数
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>() 销毁所有数据,释放内存。
3、成员函数
c.begin()返回指向第一个元素的迭代器
c.end()返回指向最后一个元素下一个位置的迭代器
deque<int> d {1,2,3,4,5};deque<int>::iterator it;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;
c.rbegin()返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
c.rend()返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)
deque<int> d {1,2,3,4,5};deque<int>::reverse_iterator it;for(it=d.rbegin();it!=d.rend();it++){ cout << *it << " ";}cout << endl;
operator=赋值运算符重载
deque<int> d1 {1,2,3,4,5},d2;d2 = d1;deque<int>::iterator it;for(it=d2.begin();it!=d2.end();it++){ cout << *it << " "; }cout << endl;
c.assign(n,num)将n个num拷贝复制到容器c
c.assign(beg,end)将[beg,end)区间的数据拷贝复制到容器c
deque<int> d1 {1,2,3,4,5},d2;d2.assign(2, 8);deque<int>::iterator it;cout << "d2.assign(n,num):";for(it=d2.begin();it!=d2.end();it++){ cout << *it << " ";}d2.assign(d1.begin(), d1.begin()+3);cout << "d2.assign(beg,end):";for(it=d2.begin();it!=d2.end();it++){ cout << *it << " ";}cout << endl;
c.at(pos)返回索引为pos的位置的元素,会执行边界检查,如果越界抛出out_of_range异常
deque<int> d {1,2,3,4,5};cout << "d.at(pos):" << d.at(2);return 0;
c.operator[]下标运算符重载
deque<int> d {1,2,3,4,5};cout << "d[2]:" << d[2];return 0;
c.empty()判断c容器是否为空
deque<int> d {1,2,3,4,5}; if(!d.empty()){ cout << "d is not empty!" << endl; }else{ cout << "d is empty!" << endl; } return 0;
c.front()返回c容器的第一个元素
c.back()返回c容器的最后一个元素
deque<int> d {1,2,3,4,5};if(!d.empty()){ cout << "d.front():" << d.front() << endl; cout << "d.back(): " << d.back() << endl;}
c.size()返回c容器中实际拥有的元素个数
deque<int> d {1,2,3,4,5};cout << "d.size():" << d.size() << endl;return 0;
c.max_size()返回c容器可能存放元素的最大数量
deque<int> d {1,2,3,4,5};cout << "d.max_size():" << d.max_size() << endl;return 0;
c.clear()清除c容器中拥有的所有元素
deque<int> d {1,2,3,4,5};deque<int>::iterator it;cout << "clear before:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;d.clear();cout << "clear after:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;
c.insert(pos,num)在pos位置插入元素num
c.insert(pos,n,num)在pos位置插入n个元素num
c.insert(pos,beg,end)在pos位置插入区间为[beg,end)的元素
deque<int> d {1,2,3,4,5};deque<int>::iterator it;cout << "insert before:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;d.insert(d.end(),22);d.insert(d.end(), 3,88);int a[5] = {1,2,3,4,5};d.insert(d.begin(),a,a+3);cout << "insert after:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;
c.erase(pos)删除pos位置的元素c.erase(beg,end)删除区间为[beg,end)的元素
c.erase(beg,end)删除区间为[beg,end)之间的元素
deque<int> d {1,2,3,4,5};d.erase(d.begin());deque<int>::iterator it;cout << "erase(pos) after:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;d.erase(d.begin(), d.begin()+3);cout << "erase(beg,end) after:" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;
c.push_back(num)在末尾位置插入元素
c.pop_back()删除末尾位置的元素
c.push_front(num)在开头位置插入元素
c.pop_front()删除开头位置的元素
deque<int> d {1,2,3,4,5}; d.push_back(10); deque<int>::iterator it; cout << "push_back(num):" ; for(it=d.begin();it!=d.end();it++){ cout << *it << " "; } cout << endl;d.pop_back();cout << "pop_back(num):" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;d.push_front(10);cout << "push_front(num):" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;d.pop_front();cout << "pop_front(num):" ;for(it=d.begin();it!=d.end();it++){ cout << *it << " ";}cout << endl;return 0;
c.resize(num)从新定义容器的大小
deque<int> d {1,2,3,4,5};cout << "d.size():" << d.size() << endl;d.resize(d.size()+5);cout << "d.resize() after:" << d.size() <<endl;deque<int>::iterator it;cout << "resize() after:" ;for(it=d.begin();it!=d.end();it++){cout << *it << " ";}cout << endl;
c1.swap(c2)交换容器c1,c2;
swap(c1,c2)同上。
deque<int> d1 {1,2,3,4,5},d2,d3;d1.swap(d2);deque<int>::iterator it;cout << "d1 swap after:" ;for(it=d1.begin();it!=d1.end();it++){ cout << *it << " ";}cout << endl;cout << "d2 swap after:" ;for(it=d2.begin();it!=d2.end();it++){ cout << *it << " ";}cout << endl;swap(d3,d2);cout << "d3 swap after:" ;for(it=d3.begin();it!=d3.end();it++){ cout << *it << " ";}cout << endl;
4、重载运算符
operator==
operator!=
operator<
operator<=
operator>
operator>=
- C++:STL之vector,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
- STL容器之Deque
- STL容器之deque
- STL学习之deque
- c++中为初始化的局部变量和全局变量的区别
- 操作系统高级教程系列_1
- 网络安全思维导图(全套11张)
- pycharm-professional-2017.2.3的激活方式
- Java 平台的三个版本
- C++ STL之deque
- 爬虫实践---新浪微博爬取+json+csv
- 黑暗之魂3 四大薪王的背景
- 补码、取反
- Vector和List的使用
- 【C51】单片机独立按键与矩阵按键
- Java垃圾回收
- SpringBoot+Maven项目实战(1):新建Maven项目
- ICPC北京网络赛-Minimum