Rogue Wave banner
Previous fileTop of documentContentsIndexNext file

deque


Container

Summary

A sequence that supports random access iterators and efficient insertion/deletion at both beginning and end.

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Synopsis

#include <deque>

template <class T, class Allocator = allocator<T> >
 class deque;

Description

deque<T, Allocator> is a type of sequence that supports random access iterators. It supports constant time insert and erase operations at the beginning or the end of the container. Insertion and erase in the middle take linear time. Storage management is handled by the Allocator template parameter.

Any type used for the template parameter T must include the following (where T is the type, t is a value of T and u is a const value of T):

Copy constructors T(t) and T(u)
Destructor t.~T()
Address of &t and &u yielding T* and const T* respectively
Assignment t = a where a is a (possibly const) value of T

Interface

Constructors

explicit 
deque(const Allocator& alloc = Allocator());
explicit 
deque(size_type n);
deque(size_type n, const T& value, 
       const Allocator& alloc = Allocator());
deque(const deque<T, Allocator>& x);
template <class InputIterator>
deque(InputIterator first, InputIterator last, 
       const Allocator& alloc = Allocator());

Destructors

~deque();

Allocators

allocator
allocator_type get_allocator() const;

Iterators

iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;

Assignment Operators

deque<T, Allocator>& 
operator=(const deque<T, Allocator>& x);

Reference Operators

reference operator[](size_type n);
const_reference operator[](size_type n) const;

Member Functions

template <class InputIterator>
void
assign(InputIterator first, InputIterator last);
void 
assign(size_type n, const T& t);
reference 
at(size_type n);
const_reference 
at(size_type) const;
reference 
back();
const_reference 
back() const;
void
clear();
bool 
empty() const;
reference 
front();
const_reference 
front() const;
iterator
erase(iterator first, iterator last);
iterator
erase(iterator position);
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);
size_type 
max_size() const;
void 
pop_back();
void 
pop_front();
void
push_back(const T& x);
void 
push_front(const T& x);
void 
resize(size_type sz);
void 
resize(size_type sz, T c);
size_type 
size() const;
void 
swap(deque<T,Allocator>& x);

Non-member Functions

template <class T, class Allocator>
bool operator==(const deque<T, Allocator>& x,
                 const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator!=(const deque<T, Allocator>& x,
                 const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator<(const deque<T, Allocator>& x,
                const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator>(const deque<T, Allocator>& x,
                const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator<=(const deque<T, Allocator>& x,
                const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator>=(const deque<T, Allocator>& x,
                const deque<T, Allocator>& y);
template <class T, class Allocator>
bool operator<(const deque<T, Allocator>& x,
                const deque<T, Allocator>& y);

Specialized Algorithms

template <class T, class Allocator>
void swap(deque<T, Allocator>& a, deque<T, Allocator>& b);

Example

Program Output

Warnings

Member function templates are used in all containers in by the Standard Template Library. An example of this is the constructor for deque<T, Allocator>, which takes two templatized iterators:

deque also has an insert function of this type. These functions, when not restricted by compiler limitations, allow you to use any type of input iterator as arguments. For compilers that do not support this feature, substitute functions allow you to use an iterator obtained from the same type of container as the one you are constructing (or calling a member function on), or you can use a pointer to the type of element you have in the container.

For example, if your compiler does not support member function templates you can construct a deque in the following two ways:

But not this way:

since the long_deque and first_deque are not the same type.

Additionally, many compilers do not support default template arguments. If your compiler is one of these, you always need to supply the Allocator template argument. For instance, you have to write:

deque<int, allocator<int> >

instead of:

deque<int>

If your compiler does not support namespaces, then you do not need the using declaration for std.



Previous fileTop of documentContentsIndexNext file
©Copyright 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998