Deque Flashcards

1
Q

Element access

at( )

A

access specified element with bounds checking
Returns a reference to the element at specified location pos, with bounds checking.

If pos is not within the range of the container, an exception of type std::out_of_range is thrown.

Parameters
pos - position of the element to return
Return value
Reference to the requested element.

Exceptions
std::out_of_range if !(pos < size()).

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Element access

operator[]

A

access specified element
Returns a reference to the element at specified location pos. No bounds checking is performed.

Parameters
pos - position of the element to return
Return value
Reference to the requested element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Element access

front( )

A

access the first element
Returns a reference to the first element in the container.

Calling front on an empty container is undefined.

Parameters
(none)

Return value
reference to the first element

Complexity
Constant

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Element access

back( )

A

access the last element
Returns a reference to the last element in the container.

Calling back on an empty container causes undefined behavior.

Parameters
(none)

Return value
Reference to the last element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Iterators
begin
cbegin( )

A

returns an iterator to the beginning
Returns an iterator to the first element of the deque.

If the deque is empty, the returned iterator will be equal to end().

range-begin-end.svg

Parameters
(none)

Return value
Iterator to the first element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Iterators
end
cend( )

A

returns an iterator to the end
Returns an iterator to the element following the last element of the deque.

This element acts as a placeholder; attempting to access it results in undefined behavior.

range-begin-end.svg

Parameters
(none)

Return value
Iterator to the element following the last element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Iterators
rbegin
crbegin( )

A

returns a reverse iterator to the beginning
Returns a reverse iterator to the first element of the reversed deque. It corresponds to the last element of the non-reversed deque. If the deque is empty, the returned iterator is equal to rend().

range-rbegin-rend.svg

Parameters
(none)

Return value
Reverse iterator to the first element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Iterators
rend
crend( )

A

returns a reverse iterator to the end
Returns a reverse iterator to the element following the last element of the reversed deque. It corresponds to the element preceding the first element of the non-reversed deque. This element acts as a placeholder, attempting to access it results in undefined behavior.

range-rbegin-rend.svg

Parameters
(none)

Return value
Reverse iterator to the element following the last element.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Capacity

empty( )

A

checks whether the container is empty
Checks if the container has no elements, i.e. whether begin() == end().

Parameters
(none)

Return value
true if the container is empty, false otherwise

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Capacity

size( )

A

returns the number of elements
Returns the number of elements in the container, i.e. std::distance(begin(), end()).

Parameters
(none)

Return value
The number of elements in the container.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Capacity

max_size( )

A

returns the maximum possible number of elements
Returns the maximum number of elements the container is able to hold due to system or library implementation limitations, i.e. std::distance(begin(), end()) for the largest container.

Parameters
(none)

Return value
Maximum number of elements.

Complexity
Constant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Capacity

shrink_to_fit( )

A

reduces memory usage by freeing unused memory
Parameters
(none)

Type requirements
-T must meet the requirements of MoveInsertable.
Return value
(none)

Complexity
At most linear in the size of the container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Modifiers

clear( )

A

clears the contents
Erases all elements from the container. After this call, size() returns zero.

Invalidates any references, pointers, or iterators referring to contained elements. Any past-the-end iterators are also invalidated.

Parameters
(none)

Return value
(none)

Complexity
Linear in the size of the container, i.e., the number of elements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Modifiers

emplace( )

A

constructs element in-place
Parameters
pos - iterator before which the new element will be constructed
args - arguments to forward to the constructor of the element
Type requirements
-T (the container’s element type) must meet the requirements of MoveAssignable, MoveInsertable and EmplaceConstructible.
Return value
Iterator pointing to the emplaced element.

Complexity
Linear in the lesser of the distances between pos and either of the ends of the container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Modifiers

erase( )

A

erases elements
Parameters
pos - iterator to the element to remove
first, last - range of elements to remove
Type requirements
-T must meet the requirements of MoveAssignable.
Return value
Iterator following the last removed element.

If pos refers to the last element, then the end() iterator is returned.

If last==end() prior to removal, then the updated end() iterator is returned.

If [first, last) is an empty range, then last is returned.

Exceptions
Does not throw unless an exception is thrown by the assignment operator of T
Complexity
Linear: the number of calls to the destructor of T is the same as the number of elements erased, the number of calls to the assignment operator of T is no more than the lesser of the number of elements before the erased elements and the number of elements after the erased elements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Modifiers

push_back( )

A

adds an element to the end
Appends the given element value to the end of the container.

1) The new element is initialized as a copy of value.
2) value is moved into the new element.
All iterators, including the past-the-end iterator, are invalidated. No references are invalidated.

Parameters
value - the value of the element to append
Type requirements
-T must meet the requirements of CopyInsertable in order to use overload (1).
-T must meet the requirements of MoveInsertable in order to use overload (2).
Return value
(none)

Complexity
Constant.

17
Q

Modifiers

emplace_back( )

A

constructs an element in-place at the end
Parameters
args - arguments to forward to the constructor of the element
Type requirements
-T (the container’s element type) must meet the requirements of EmplaceConstructible.
Return value
(none)

(until C++17)
A reference to the inserted element.

(since C++17)
Complexity
Constant.

18
Q

Modifiers

pop_back( )

A

removes the last element
Parameters
(none)

Return value
(none)

Complexity
Constant.

Exceptions
Throws nothing.

19
Q

Modifiers

push_front( )

A
inserts an element to the beginning
Parameters
value	-	the value of the element to prepend
Return value
(none)

Complexity
Constant.

Exceptions
If an exception is thrown, this function has no effect (strong exception guarantee).

20
Q

Modifiers

emplace_front( )

A

constructs an element in-place at the beginning
Parameters
args - arguments to forward to the constructor of the element
Type requirements
-T (the container’s element type) must meet the requirements of EmplaceConstructible.
Return value
(none) (until C++17)
A reference to the inserted element. (since C++17)
Complexity
Constant.

21
Q

Modifiers

pop_front( )

A

removes the first element
Parameters
(none)

Return value
(none)

Complexity
Constant.

Exceptions
Does not throw.

22
Q

Modifiers

resize( )

A

changes the number of elements stored
Resizes the container to contain count elements.

If the current size is greater than count, the container is reduced to its first count elements.

If the current size is less than count,

1) additional default-inserted elements are appended
2) additional copies of value are appended.
Parameters
count - new size of the container
value - the value to initialize the new elements with
Type requirements
-T must meet the requirements of MoveInsertable and DefaultInsertable in order to use overload (1).
-T must meet the requirements of CopyInsertable in order to use overload (2).
Return value
(none)
Complexity
Linear in the difference between the current size and count.

23
Q

Modifiers

swap( )

A
swaps the contents
Parameters
other	-	container to exchange the contents with
Return value
(none)

Exceptions
(none)

(until C++17)
noexcept specification:  
noexcept(std::allocator_traits::is_always_equal::value)
(since C++17)
Complexity
Constant.
24
Q

Modifiers

insert( )

A

inserts elements
Parameters
pos - iterator before which the content will be inserted. pos may be the end() iterator
value - element value to insert
first, last - the range of elements to insert, can’t be iterators into container for which insert is called
ilist - initializer list to insert the values from
Type requirements
-T must meet the requirements of CopyAssignable and CopyInsertable in order to use overload (1).
-T must meet the requirements of MoveAssignable and MoveInsertable in order to use overload (2).
-T must meet the requirements of CopyAssignable and CopyInsertable in order to use overload (3).
-T must meet the requirements of EmplaceConstructible in order to use overload (4,5).
-T must meet the requirements of Swappable, MoveAssignable, MoveConstructible and MoveInsertable in order to use overload (4,5). (since C++17)
Return value
1-2) Iterator pointing to the inserted value
3) Iterator pointing to the first element inserted, or pos if count==0.
4) Iterator pointing to the first element inserted, or pos if first==last.
5) Iterator pointing to the first element inserted, or pos if ilist is empty.
Complexity
1-2) Constant plus linear in the lesser of the distances between pos and either of the ends of the container.
3) Linear in count plus linear in the lesser of the distances between pos and either of the ends of the container.
4) Linear in std::distance(first, last) plus linear in the lesser of the distances between pos and either of the ends of the container.
5) Linear in ilist.size() plus linear in the lesser of the distances between pos and either of the ends of the container.
Exceptions
If an exception is thrown when inserting a single element at either end, this function has no effect (strong exception guarantee).