deque(双端队列)
deque同样是一种顺序容器,里面的元素的一样按照严格的线性序列排序
这种容器与其他容器相比,能够更有效的在两端执行插入和删除,deque在第一个元素能够执行插入,这是个优势,deque的缺点在与它的内存空间不是连续的,是有多块内存使用链表结构链接在一起,不过这样的好处是更有效的使用内存,能够自动释放内存,而vector不会释放内存,直到程序结束才释放.这样deque与vector的各具有的优势就显示出来了,vector使用的是数组,deque使用的是链表,如果只在尾部插入数据,vector的效率会高一些,但在其他地方插入,deque效率会高一些,而且当vector中的元素大于容量时要使用realloc()重新分配内存,这会导致vector中元素的引用,指针和迭代器失效,而且重新分配内存会花很多时间,而deque增大或变小不会导致引用,指针和迭代器失效,因为它只改变链表结构.
deque的成员函数和vector的成员函数用法基本一样
1.构造函数
explicit deque ( const Allocator& = Allocator() );
explicit deque ( size_type n, const T& value= T(), const Allocator& = Allocator() );
template <class InputIterator>
deque ( InputIterator first, InputIterator last, const Allocator& = Allocator() );
deque ( const deque<T,Allocator>& x );
2.虚构函数
~deque ( );
3.重载了=符号
deque<T,Allocator>& operator= ( const deque<T,Allocator>& x );
4.deque::begin()
iterator begin ();
const_iterator begin () const;
5.deque::end()
iterator end ();
const_iterator end () const;
6.deque::rbegin()
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
7.deque::rend()
reverse_iterator rend();
const_reverse_iterator rend() const;
8.deque::size()
size_type size() const;
9.deque::max_size()
size_type max_size () const;
10.deque::resize()
void resize ( size_type sz, T c = T() );
11.deque::empty()
bool empty ( ) const;
12.deque::operator[] //用于下标访问元素
reference operator[] ( size_type n );
const_reference operator[] ( size_type n ) const;
13.deque::at()
const_reference at ( size_type n ) const;
reference at ( size_type n );
14.deque::front()
reference front ( );
const_reference front ( ) const;
15.deque::back()
reference back ( );
const_reference back ( ) const;
16.deque::assign()
template <class InputIterator>
void assign ( InputIterator first, InputIterator last );
void assign ( size_type n, const T& u );
17.deque::push_back()
void push_back ( const T& x );
18.deque::push_front() //从前面插入元素
void push_front ( const T& x );
19.deque::pop_back()
void pop_back ( );
20.deque::pop_front() //从首位置删除元素
void pop_front ( );
21.deque::insert()
iterator insert ( iterator position, const T& x );
void insert ( iterator position, size_type n, const T& x );
template <class InputIterator>
void insert ( iterator position, InputIterator first, InputIterator last );
22.deque::erase()
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
23.deque::swap()
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
24.deque::clear()
void clear ( );
相关阅读链接: