C++容器之deque
来源:互联网 发布:我的淘宝已买到的宝贝 编辑:程序博客网 时间:2024/06/04 23:35
简介
Deque是double-endedqueue的缩写。Deque的很多操作类似于vector,但是deque允许从它前面和后面插入删除数据。
成员函数
复制控制
deque::deque
构造函数:构造一个deque对象,根据构造函数版本初始化该对象。
deque::~deque
析构函数:销毁一个deque对象。
deque::operator=
赋值函数:为deque对象分配新的元素以替换原来的元素,并随之改变其大小。
示例代码
#include<iostream>#include<deque> using namespace std; voidprint(deque<int> deq){ for(deque<int>::iterator it = deq.begin();it != deq.end(); ++it) { cout << *it << ""; } cout << endl;} intmain(void){ int arr[] = {1, 2, 3}; // deque::deque deque<int> first; deque<int> second(5,1); deque<int> third(second.begin(), second.end()); deque<int> fourth(third); deque<int> fifth(arr, arr + sizeof(arr)/sizeof(int)); first = second; print(first); first = fifth; print(first); return(0);}
迭代器
deque::begin()
返回指向deque容器第一个元素的迭代器。返回类型iterator/const_iterator。
deque::end()
返回指向deque容器最后一个元素的下一个位置的迭代器,该迭代器不能被引用。返回值类型iterator/
const_iterator。
deque::rbegin()
返回指向deque容器最后一个元素的反转迭代器。返回值类型reverse_iterator/const_reverse_iterator。
deque::rend()
返回指向deque容器第一个元素前一个位置的反转迭代器,该迭代器不能被引用。返回值类型为reverse_iterator/const_reverse_iterator。
deque::cbegin()
begin()函数的const版本。返回值类型为const_iterator,它指向的内容是const类型,不能利用该迭代器去修改其指向的内容。
deque::cend()
end()函数的const版本。返回值类型为const_iterator,它指向的内容是const类型,不能利用该迭代器去修改其指向的内容。
deque::crbegin()
rbegin()函数的const版本。返回值类型为const_iterator,它指向的内容是const类型,不能利用该迭代器去修改其指向的内容。
deque::crend()
rend()函数的const版本。返回值类型为const_iterator,它指向的内容是const类型,不能利用该迭代器去修改其指向的内容。
示例程序
#include<iostream>#include<deque> using namespace std; intmain(void){ deque<int> first(5, 1); deque<int> const second(5, 2); for(deque<int>::iterator it = first.begin();it != first.end(); ++it) { cout << *it << ""; } cout << endl; for(deque<int>::const_iterator it = second.cbegin();it != second.cend(); ++it) { // *it = 3 // error cout << *it << ""; } cout << endl; return(0);}
Capacity
deque::size()
返回deque容器中元素的个数。返回值类型:deque::size_type。
deque::max_size()
返回deque容器能存放元素个数的最大值。返回值类型:deque::size_type。
deque::resize()
重置deque容器大小,使之能存入指定书目的元素。
deque::empty()
判断deque是否为空,为空返回true,否则返回false。
deque::shrink_to_fit()
将deque的容量减少到当前存储数据的大小。
示例代码
#include<iostream>#include<deque> using namespace std; intmain(void){ deque<int> first(100); // deque::size cout << "dequesize : " << first.size() << endl; // deque::max_size cout << "dequemax_size : " << first.max_size() << endl; // deque::resize first.resize(10); cout << "dequefirst size : " << first.size() << endl; // deque::shrink_to_fit first.shrink_to_fit(); return(0);}
Element access
deque::operator[]
返回指向deque容器指定位置元素的一个引用。返回值类型reference/const_reference。
deque::at()
返回指向deque容器指定位置元素的一个引用。返回值类型reference/const_reference。
deque::front()
返容器第一个元素的引用。返回值类型reference/const_reference。
deque::back()
返回指向deque容器最后一个元素的引用。返回值类型reference/const_reference。
示例程序
#include<iostream>#include<deque> using namespace std; intmain(void){ deque<int> first; for(int i = 0; i < 5; i++) { first.push_back(i + 1); } cout << "deque::operator[]: " << first[0] << endl; cout << "deque::at(): " << first.at(0) << endl; cout << "deque::front(): " << first.front() << endl; cout << "deque::back():" << first.back() << endl; //deque<int>::reference re = first.at(0); deque<int>::referencere = first.front(); re = 10; cout << "Thefirst element is : " << first.front() << endl; return(0);}
Modifiers
deque::assign()
为deque容器分配新的元素以代替现有元素,随之修改其大小。
deque::push_back()
在deque容器的末尾插入一个元素。
deque::push_front()
在deque容器前端插入一个元素。
deque::pop_back()
删除deque容器末端的最后一个元素。
deque::pop_front()
删除deque容器前端第一个元素。
deque::insert()
在指定位置插入一个新元素。返回一个迭代器,指向插入的第一个元素。
deque::erase()
从deque容器中删除一个或多个元素。返回一个迭代器,指向被删除元素后面的一个元素。
deque::swap()
交换两个deque容器中的元素。两个容器类型必须相同,大小可以不同。
deque::clear()
清空deque容器,其大小变为0。
deque::emplace()
在deque容器指定位置放置一个元素。返回一个迭代器,指向放置元素的当前位置。
deque::emplace_front()
在deque容器前端放置一个元素。
deque::emplace_back()
在deque容器末端放置一个元素。
示例程序
#include<iostream>#include<vector>#include<deque> using namespace std; voidprint(deque<int> deq){ for(deque<int>::iterator it = deq.begin(); it != deq.end(); ++it) { cout << *it << ""; } cout << endl;} intmain(void){ deque<int> first; deque<int> second; deque<int> third; int arr[] = {1, 2, 3, 4, 5}; // deque::assign first.assign(5, 10); second.assign(first.begin(), first.end()); third.assign(arr, arr + sizeof(arr)/sizeof(int)); print(first); print(second); print(third); // deque::push_front push_back third.push_front(0); print(third); third.push_back(6); print(third); // deque::pop_front pop_back third.pop_front(); print(third); third.pop_back(); print(third); // deque::insert third.insert(third.begin(), 10); print(third); third.insert(third.end(), 2, 20); print(third); vector<int> vec(2, 30); third.insert(third.end(), vec.begin(), vec.end()); print(third); // deque::erase third.erase(third.begin()); print(third); third.erase(third.end() - 2, third.end()); print(third); // deque::swap third.swap(second); cout << "Second: "; print(second); cout << "Third: "; print(third); // deque::emplace emplace_back emplace_front third.emplace(third.begin() + 1, 20); print(third); third.emplace_back(20); print(third); third.emplace_front(20); print(third); return(0);}
- STL容器之deque
- STL容器之 deque
- STL容器之deque
- STL容器之deque
- STL容器之deque
- C++容器之deque
- STL容器之Deque
- STL容器之deque
- STL之deque容器
- STL容器之deque
- STL之Deque容器
- 序列容器之Deque
- c++STL之顺序容器(vector、deque、list)分析
- C++ STL容器之 deque
- 初探STL容器之deque
- STL之deque容器详解
- STL容器总结之deque
- STL之deque容器详解
- 对你同样重要的非技术贴,10件事证明你跟错了人
- spring aop AspectJ
- strncpy的实现
- 7.8 有了malloc/free 为什么还要new/delete ?
- 4. Java 语言的特性
- C++容器之deque
- 全排列问题--剑指offer28
- 第十二周工作总结
- java基础题
- JavaEE路径配置
- 进程与线程
- 特征提取-SIFT特征源码解析
- Makefile三个有意思的变量
- 【Linux驱动】Linux-2.6.20.4内核移植