(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++20) |
void resize( size_type count,const value_type& value); | (2) | (constexpr since C++20) |
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. Additional complexity possible due to reallocation if capacity is less thancount.
If an exception is thrown for any reason, these functions have no effect (strong exception safety guarantee).Although not explicitly specified,std::length_error is thrown if the capacity required by the newvector would exceedmax_size().
In overload(1), if | (since C++11) |
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.
Vector capacity is never reduced when resizing to smaller size because that would invalidate all iterators, while the specification only invalidates the iterators to/after the erased elements.
#include <vector>#include <iostream> void print(auto rem,conststd::vector<int>& c){for(std::cout<< rem;constint el: c)std::cout<< el<<' ';std::cout<<'\n';} int main(){std::vector<int> c={1,2,3}; print("The vector 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 vector 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 1525 | C++98 | the behavior ofresize(size()) was not specified | specified |
| LWG 2033 | C++11 | 1. elements were removed by usingerase()[1] 2. the type requirements of T were incorrect | 1. usespop_back() 2. corrected |
| 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 |
vector, 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 thevector, making theMoveAssignable unnecessary.| returns the maximum possible number of elements (public member function)[edit] | |
| returns the number of elements (public member function)[edit] | |
| returns the number of elements that can be held in currently allocated storage (public member function)[edit] | |
| checks whether the container is empty (public member function)[edit] |