(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
| Member types | |||||||||||||||||||||
| Member functions | |||||||||||||||||||||
| Non-member functions | |||||||||||||||||||||
|
| ||||||||||||||||||||
| Deduction guides(C++17) | |||||||||||||||||||||
void resize( size_type count); | (1) | (constexpr since C++26) |
void resize( size_type count,const value_type& value); | (2) | (constexpr since C++26) |
Resizes the container to containcount elements:
Contents |
| count | - | new size of the container | ||
| value | - | the value to initialize the new elements with | ||
| Type requirements | ||||
-
| ||||
Linear in the difference between the current size andcount.
If value-initialization in overload(1) is undesirable, for example, if the elements are of non-class type and zeroing out is not needed, it can be avoided by providing acustomAllocator::construct.
#include <deque>#include <iostream> void print(auto rem,conststd::deque<int>& c){for(std::cout<< rem;constint el: c)std::cout<< el<<' ';std::cout<<'\n';} int main(){std::deque<int> c={1,2,3}; print("The deque holds: ", c); c.resize(5); print("After resize up to 5: ", c); c.resize(2); print("After resize down to 2: ", c); c.resize(6,4); print("After resize up to 6 (initializer = 4): ", c);}
Output:
The deque holds: 1 2 3After resize up to 5: 1 2 3 0 0After resize down to 2: 1 2After resize up to 6 (initializer = 4): 1 2 4 4 4 4
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 679 | C++98 | resize() passedvalue by value | passes by const reference |
| LWG 1418 | C++98 | the behavior ofresize(size()) was not specified | specified |
| LWG 2033 | C++11 | 1. elements were removed by usingerase()[1] 2. T was not required to beMoveInsertable | 1. usespop_back() 2. required |
| LWG 2066 | C++11 | overload(1) did not have the exception safety guarantee of overload(2) | added |
| LWG 2160 | C++11 | elements were removed by usingpop_back()[2] due to the resolution of LWG 2033 | does not specify the method of removing elements |
deque, so the value type is required to beMoveAssignable so that the elements following the removed section can be moved forward to fill the gap. However,resize() can only remove elements at the end of thedeque, making theMoveAssignable unnecessary.| returns the maximum possible number of elements (public member function)[edit] | |
| returns the number of elements (public member function)[edit] | |
| checks whether the container is empty (public member function)[edit] |