Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::vector::resize(3)	      C++ Standard Libary	std::vector::resize(3)

NAME
       std::vector::resize - std::vector::resize

Synopsis
	  void	resize(	 size_type  count  );				(since
       C++11)
								   (until
       C++20)
	  constexpr void  resize(  size_type  count  );			(since
       C++20)
	  void	 resize(   size_type   count,	T   value   =	T()  );	   (1)
       (until C++11)
	  void	   resize(     size_type     count,	const	   value_type&
       (since C++11)
	  value	      );						   (2)
       (until C++20)
	  constexpr	void	 resize(      size_type	     count,	 const
       (since C++20)
	  value_type& value );

	  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  ele-
       ments 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 over-
       load (2).

Return value
	  (none)

Complexity
	  Linear  in  the difference between the current size and count. Addi-
       tional complexity
	  possible due to reallocation if capacity is less than	count

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

	  In  overload	(1),  if T's move constructor is not noexcept and T is
       not
	  CopyInsertable  into	*this,	vector	will  use  the	throwing  move
       (since C++11)
	  constructor.	If  it throws, the guarantee is	waived and the effects
       are
	  unspecified.

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 be-
       cause that would
	  invalidate all iterators, rather than	only the ones  that  would  be
       invalidated by the
	  equivalent sequence of pop_back() calls.

Example
       // Run this code

	#include <iostream>
	#include <vector>
	int main()
	{
	    std::vector<int> c = {1, 2,	3};
	    std::cout << "The vector holds: ";
	    for(const auto& el:	c) std::cout <<	el << '	';
	    std::cout << '\n';
	    c.resize(5);
	    std::cout << "After	resize up to 5:	";
	    for(const auto& el:	c) std::cout <<	el << '	';
	    std::cout << '\n';
	    c.resize(2);
	    std::cout << "After	resize down to 2: ";
	    for(const auto& el:	c) std::cout <<	el << '	';
	    std::cout << '\n';
	    c.resize(6,	4);
	    std::cout << "After	resize up to 6 (initializer = 4): ";
	    for(const auto& el:	c) std::cout <<	el << '	';
	    std::cout << '\n';
	}

Output:
	The vector holds: 1 2 3
	After resize up	to 5: 1	2 3 0 0
	After resize down to 2:	1 2
	After resize up	to 6 (initializer = 4):	1 2 4 4	4 4

See also
	  size	 returns the number of elements
		 (public member	function)
	  insert inserts elements
		 (public member	function)
	  erase	 erases	elements
		 (public member	function)

http://cppreference.com		  2022.07.31		std::vector::resize(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::vector::resize&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help