The C++ Standard Library
- C++ Library - <valarray>
- C++ Library - <utility>
- C++ Library - <typeinfo>
- C++ Library - <tuple>
- C++ Library - <thread>
- C++ Library - <string>
- C++ Library - <stdexcept>
- C++ Library - <regex>
- C++ Library - <numeric>
- C++ Library - <new>
- C++ Library - <memory>
- C++ Library - <locale>
- C++ Library - <limits>
- C++ Library - <functional>
- C++ Library - <exception>
- C++ Library - <complex>
- C++ Library - <atomic>
- C++ Library - <streambuf>
- C++ Library - <sstream>
- C++ Library - <ostream>
- C++ Library - <istream>
- C++ Library - <iostream>
- C++ Library - <iosfwd>
- C++ Library - <ios>
- C++ Library - <iomanip>
- C++ Library - <fstream>
- C++ Library - Home
The C++ STL Library
- C++ Library - <iterator>
- C++ Library - <algorithm>
- C++ Library - <vector>
- C++ Library - <unordered_set>
- C++ Library - <unordered_map>
- C++ Library - <stack>
- C++ Library - <set>
- C++ Library - <queue>
- C++ Library - <map>
- C++ Library - <list>
- C++ Library - <forward_list>
- C++ Library - <deque>
- C++ Library - <bitset>
- C++ Library - <array>
C++ Programming Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
C++ Library - <deque>
Introduction
Deque is acronym for Double Ended Queue. It is a sequence container that can change it s size runtime. Container is an object that holds data of same type. Sequence containers store elements strictly in pnear sequence.
Elements of deque can be scattered in different chunks of memory. Container stores necessary information to allow direct access to any element in constant time. Unpke vectors, deque are not guaranteed to store all it s element at contiguous memory locations. Hence it does not allow direct access to data by offsetting pointers. But it enables direct access to any element using subscript operator [ ].
Deque can shrink or expand as needed from both ends at run time. The storage requirement is fulfilled automatically by internal allocator. Deque provides similar functionapty as vectors, but provides efficient way to insert and delete data from any end.
Zero sized deques are also vapd. In that case deque.begin() and deque.end() points to same location. But behavior of calpng front() or back() is undefined.
Definition
Below is definition of std::deque from <deque> header file
template < class T, class Alloc = allocator<T> > class deque;
Parameters
T − Type of the element contained.
T may be substituted by any other data type including user-defined type.
Alloc − Type of allocator object.
By default, the allocator class template is used, which defines the simplest memory allocation model and is value-independent.
Member types
Following member types can be used as parameters or return type by member functions.
Sr.No. | Member types | Definition |
---|---|---|
1 | value_type | T (First parameter of the template) |
2 | allocator_type | Alloc (Second parameter of the template) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | pointer | value_type* |
6 | const_pointer | const value_type* |
7 | iterator | a random access iterator to value_type |
8 | const_iterator | a random access iterator to const value_type |
9 | reverse_iterator | std::reverse_iterator <iterator> |
10 | const_reverse_iterator | std::reverse_iterator <const_iterator> |
11 | size_type | size_t |
12 | difference_type | ptrdiff_t |
Functions from <deque>
Below is pst of all methods from <deque> header.
Constructors
Sr.No. | Method & Description |
---|---|
1 | Constructs an empty deque with zero element. |
default constructor
2 | construct a new deque with n elements and assign val to each element of deque |
fill constructor
3 | Constructs a deque with as many elements as in range of first to last. |
range constructor
4 | Constructs a deque with copy of each elements present in existing container. |
copy constructor
5 | Constructs a deque with the contents of other using move semantics. |
move constructor
6 | Constructs a deque from initiapze pst. |
initiapzer pst constructor
Destructor
Sr.No. | Method & Description |
---|---|
1 | Destroys deque object by deallocating it s memory. |
Member functions
Sr.No. | Method & Description |
---|---|
1 | Assign new values to the deque elements by replacing old ones. |
range version
2 | Assign new values to the deque elements by replacing old ones. |
fill version
3 | Assign new values to the deque elements by replacing old ones. |
initiapzer pst version
4 | Returns reference to the element present at location n in the deque. |
5 | Returns a reference to the last element of the deque. |
6 | Return a random access iterator pointing to the first element of the deque. |
7 | Returns a constant random access iterator which points to the beginning of the deque. |
8 | Returns a constant random access iterator which points to the beginning of the deque. |
9 | Destroys the deque by removing all elements from the deque and sets size of deque to zero. |
10 | Returns a constant reverse iterator which points to the reverser beginning of the container. |
11 | Returns a constant reverse iterator which points to the reverse end of the deque. |
12 | Extends container by inserting new element at position. |
13 | Inserts new element at the end of deque. |
14 | Inserts new element at the beginning of deque. |
15 | Tests whether deque is empty or not. |
16 | Returns an iterator which points to past-the-end element in the deque container. |
17 | Removes single element from the the deque. |
position version
18 | Removes single element from the the deque. |
range version
19 | Returns a reference to the first element of the deque |
20 | Returns an allocator associated with deque |
21 | Extends container by inserting new element at position. |
single element version
22 | Extends container by inserting new element in the container. |
fill version
23 | Extends container by inserting new element in the container. |
range version
24 | Extends container by inserting new element in the container. |
move version
25 | Extends container by inserting new element in the container. |
initiapzer pst version
26 | Returns the maximum number of elements can be held by deque. |
27 | Assign new contents to the deque by replacing old ones and modifies size if necessary. |
copy version
28 | Assign new contents to the deque by replacing old ones and modifies size if necessary. |
move version
29 | Assign new contents to the deque by replacing old ones and modifies size if necessary. |
initiapzer pst version
30 | Returns a reference to the element present at location n. |
31 | Removes last element from deque and reduces size of deque by one. |
32 | Removes first element from deque and reduces size of deque by one. |
33 | Inserts new element at the end of deque and increases size of deque by one. |
34 | Inserts new element at the end of deque and increases size of deque by one. |
move version
35 | Inserts new element at the front of deque and increases size of deque by one. |
36 | Inserts new element at the front of deque and increases size of deque by one. |
move version
37 | Returns a reverse iterator which points to the last element of the deque. |
38 | Returns a reverse iterator which points to the reverse end of the deque. |
39 | Changes the size of deque. |
40 | Changes the size of deque. |
value version
41 | Requests the container to reduce it s capacity to fit its size. |
42 | Returns the number of elements present in the deque. |
43 | Exchanges the content of deque with contents of another deque x. |
Non-member overloaded functions
Sr.No. | Method & Description |
---|---|
1 | Tests whether two deques are equal or not. |
2 | Tests whether two deques are equal or not. |
3 | Tests whether first deque is less than other or not. |
4 | Tests whether first deque is less than or equal to other or not. |
5 | Tests whether first deque is greater than other or not. |
6 | Tests whether first deque is greater than or equal to other or not. |
7 | Exchanges the contents of two deque. |