std::vector<T,Allocator>::resize

Resizes the container to contain count elements, does nothing if count == size().

# Declarations

void resize( size_type count );

(constexpr since C++20)

void resize( size_type count, const value_type& value );

(constexpr since C++20)

# Parameters

# Notes

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 a custom Allocator::construct. Vector capacity is never reduced when resizing to smaller size because that would invalidate all iterators, rather than only the ones that would be invalidated by the equivalent sequence of pop_back() calls.

# Example

#include <vector>
#include <iostream>
 
void print(auto rem, const std::vector<int>& c)
{
    for (std::cout << rem; const int 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);
}

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
LWG 679C++98resize() passed value by valuepasses by const reference
LWG 1525C++98the behavior of resize(size()) was not specifiedspecified
LWG 2033C++111. elements were removed by using erase()[1]2. the type requirements of T were incorrect1. uses pop_back()2. corrected
LWG 2066C++11overload (1) did not have the exceptionsafety guarantee of overload (2)added
LWG 2160C++11elements were removed by using pop_back()[2]due to the resolution of LWG 2033does not specify the methodof removing elements

# See also