[deque.capacity]

# 23 Containers library [[containers]](./#containers)

## 23.3 Sequence containers [[sequences]](sequences#deque.capacity)

### 23.3.5 Class template deque [[deque]](deque#capacity)

#### 23.3.5.3 Capacity [deque.capacity]

[ð](#lib:resize,deque)

`constexpr void resize(size_type sz);
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6722)

*Preconditions*: T is *Cpp17MoveInsertable* and *Cpp17DefaultInsertable* into deque[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6726)

*Effects*: If sz < size(), erases the last size() - sz elements
from the sequence[.](#2.sentence-1)

Otherwise,
appends sz - size() default-inserted elements to the sequence[.](#2.sentence-2)

[ð](#lib:resize,deque_)

`constexpr void resize(size_type sz, const T& c);
`

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6739)

*Preconditions*: T is *Cpp17CopyInsertable* into deque[.](#3.sentence-1)

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6743)

*Effects*: If sz < size(), erases the last size() - sz elements
from the sequence[.](#4.sentence-1)

Otherwise,
appends sz - size() copies of c to the sequence[.](#4.sentence-2)

[ð](#lib:shrink_to_fit,deque)

`constexpr void shrink_to_fit();
`

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6756)

*Preconditions*: T is *Cpp17MoveInsertable* into deque[.](#5.sentence-1)

[6](#6)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6760)

*Effects*: shrink_to_fit is a non-binding request to reduce memory use
but does not change the size of the sequence[.](#6.sentence-1)

[*Note [1](#note-1)*:

The request is non-binding to allow latitude for
implementation-specific optimizations[.](#6.sentence-2)

â *end note*]

If the size is equal to the old capacity, or
if an exception is thrown other than by the move constructor
of a non-*Cpp17CopyInsertable* T,
then there are no effects[.](#6.sentence-3)

[7](#7)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6773)

*Complexity*: If the size is not equal to the old capacity,
linear in the size of the sequence;
otherwise constant[.](#7.sentence-1)

[8](#8)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6779)

*Remarks*: If the size is not equal to the old capacity,
then invalidates all the references, pointers, and iterators
referring to the elements in the sequence,
as well as the past-the-end iterator[.](#8.sentence-1)
