STL学习之路(一) deque
来源:互联网 发布:苹果手机淘宝p图软件 编辑:程序博客网 时间:2024/06/06 22:05
std::deque
deque (usually pronounced like “deck”) is an irregular acronym of double-ended queue. Double-ended queues are sequence containers with dynamic sizes that can be expanded or contracted on both ends (either its front or its back).
deque是一种双向队列,具有动态分配的功能,可以快速地在首尾进行插入删除。
deque具有随机访问的特性,也可以在中间进行插入删除,但是性能没有vector好。
Member functions
Iterators
name | function—|—begin | Return iterator to beginning (public member function )end | Return iterator to end (public member function )rbegin |Return reverse iterator to reverse beginning (public member function )rend | Return reverse iterator to reverse end (public member function )cbegin | Return const_iterator to beginning (public member function )cend | Return const_iterator to end (public member function )crbegin | Return const_reverse_iterator to reverse beginning (public member function )crend | Return const_reverse_iterator to reverse end (public member function )
rbegin
rbegin是deque类中的一个公有函数,返回一个指向当前deque最后一个元素的反向迭代器,反向迭代器随着值的增加,将更靠近首元素。> 区别于 deque::back,当前函数返回的是指向最后一个元素的逆序随机访问迭代器(Reverse random access iterator),而 deque::back 返回指向最后一个元素的引用(Reference)。
rend
deque 类模板的公共成员函数。返回指向当前 deque 对象中第一个元素之前( Preceding the first)的元素的逆序迭代器。 用法参考rbegin。
示例代码:
#include<iostream>#include<deque>using namespace std;int main(void){ class Test_rbegin{ public: deque<int> :: iterator pos; deque<int> :: reverse_iterator rpos;/*because deque::rbegin return a reverse_iterator*/ public: void traverse(deque<int> &que){ for(pos=que.begin();pos!=que.end();pos++) cout<<*pos<<" "; cout<<endl; } void reverse(deque<int> &que){ for(rpos=que.rbegin();rpos!=que.rend();rpos++) cout<<*rpos<<" "; cout<<endl; } }; class Test_rbegin test; deque<int> que(5,0); for(int i=0;i<5;i++) que[i]=i; cout<<"After Initial the que"<<endl; test.traverse(que); cout<<"Reverse the que by deque::rbegin() iterator"<<endl; test.reverse(que);}
Capacity
name | function—|—size|Return size (public member function )max_size|Return maximum size (public member function )resize|Change size (public member function )empty|Test whether container is empty (public member function )shrink_to_fit |Shrink to fit (public member function )前四个函数都很常用,最后一个是为了缩小容器容量以存放所有元素,因为deque通常会分配比当前元素多的内存,以便更快的进行插入删除操作。
Element access:
以上是访问元素用的函数,很常用。
Modifiers:
// <deque>iterator erase (const_iterator position);iterator erase (const_iterator first, const_iterator last);
deque::erase是deque类的公有函数,删除单个元素,或一个区间内的元素。
// <deque>// single element (1) iterator insert (const_iterator position, const value_type& val);// fill (2) iterator insert (const_iterator position, size_type n, const value_type& val);// range (3) template <class InputIterator> iterator insert (const_iterator position, InputIterator first, InputIterator last);// move (4) iterator insert (const_iterator position, value_type&& val);// initializer list (5) iterator insert (const_iterator position, initializer_list<value_type> il);
deque::insert
insert函数可以向deque中插入元素,可以插入单个元素,插入多个元素,向[first,last)区间内插入元素。
- position参数为新元素将要插入的位置,是一个指向元素的迭代器。
- val为待插入元素的值,成员类型 value_type是该容器的元素的类型,作为 deque实例化时第一个模板参数的别名而存在
- first,last
分别指向一个序列中初始及末尾位置的输入迭代器。这个范围即 [first,last) ,包括 first 到 last 间的所有元素,包括 first 指向的元素,但不包括 last 指向的元素。
deque :: swap是deque类的公有函数,使另一个同类型的deque中的x与之交换。
非成员函数 std :: swap提供了类似当前函数的功能,但做了一些优化。
deque::emplace
在指定位置处的元素前插入一个新的元素。新的元素是以 args 作为其构造函数的参数而构造的。
emplace_front在首部插入新元素,emplace_back在尾部插入元素。
- STL学习之路(一) deque
- STL学习之deque
- STL学习之deque
- STL学习笔记之容器--deque(一)
- 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
- nginx+tomcat+memcached 实现负载均衡 。动静分离。session共享
- jsf中的ajax技术
- morphogenesis —— 形态发生
- 【腾讯Bugly干货分享】一步一步实现Android的MVP框架
- NCReport制作报表
- STL学习之路(一) deque
- CopyOnWriteArrayList
- java图像处理---特殊颜色二值化处理
- C#基础--之数据类型
- 遍历删除List中的元素
- 关于Java与前端jQuery的图片传输功能小结
- ExtJs6 store发送数据添加参数
- Java数据类型和运算符
- 【腾讯Bugly干货分享】iOS黑客技术大揭秘