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

FreeBSD Manual Pages

  
 
  

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

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

Synopsis
       vector();				(until
						C++17)
						(since		      vector()
       C++17) noexcept(noexcept(Allocator()));	       (until
						C++20)	 constexpr    vector()
       (since noexcept(noexcept(Allocator()));	       C++20) explicit vector(
       const				  (until     Allocator&	   alloc    );
       C++17)
						       (since explicit vector(
       const			       C++17)  Allocator&  alloc  )  noexcept;
       (until
						       C++20)	constexpr  ex-
       plicit vector( const		   (since Allocator& alloc ) noexcept;
       C++20) explicit vector( size_type count,
							      (until const  T&
       value = T(),				     C++11)

       const Allocator&	alloc =	Allocator()); vector( size_type	count,
							      (since  const T&
       value,					     C++11)
							      (until const Al-
       locator&	 alloc	=				 C++20)	 Allocator());
       constexpr vector( size_type count,
							      (since  const T&
       value,					     C++20)

       const Allocator&	alloc =	Allocator());
								     (since
       explicit	vector(	size_type count				     C++11) );
       (until
								     C++14)
       explicit	 vector(  size_type					(since
       count,  const  Allocator&  alloc	=				C++14)
       Allocator() );						     (until
								     C++20)
       constexpr	explicit	vector(	       size_type	count,
       (since		const		Allocator&	     alloc	     =
       C++20) Allocator() );		       (1) template< class InputIt >

       vector(		    InputIt		  first,	       InputIt
       (until		  last,						   (2)
       C++20)

       const Allocator&	alloc =	 Allocator()  );  template<  class  InputIt  >
       (3)

       constexpr	      vector(		   InputIt		first,
       (since			       InputIt				 last,
       C++20)

       const  Allocator& alloc = Allocator() );	vector(	const vector& other );
       (until
										   C++20)
       constexpr	      vector(		   const	       vector&
       (since	   other     );						   (4)
       C++20)
											  (since
       vector(		     const		 vector&		other,
       C++11)		const		Allocator&	     alloc	    );
       (until
											  C++20)
       constexpr	      vector(		   const	       vector&
       (since  other,  const  Allocator&  alloc	 );			   (5)
       C++20)
												 (since
       vector(		      vector&&		      other		    );
       C++11)
												 (un-
       til
												 C++17)
												 (since
       vector(		       vector&&			other		     )
       C++17)							     noexcept;
       (6)			   (until
												 C++20)
       constexpr	      vector(		   vector&&		 other
       (7)			      (since		)	     noexcept;
       C++20)
													(since
       vector(		     vector&&		    other,		 const
       (8)			  C++11)       Allocator&	alloc	    );
       (until
													C++20)
       constexpr			vector(			      vector&&
       (since	    other,	 const	     Allocator&	       alloc	    );
       C++20)		      vector(		      std::initializer_list<T>
       (9)				       (since			 init,
       C++11)		const		Allocator&	     alloc	     =
       (until			       Allocator()			    );
       (10)	      C++20)  constexpr	vector(	std::initializer_list<T> init,
       (since		const		Allocator&	     alloc	     =
       C++20) Allocator() );

	  Constructs  a	 new container from a variety of data sources, option-
       ally using a user
	  supplied allocator alloc.

	  1) Default constructor. Constructs an	empty  container  with	a  de-
       fault-constructed
	  allocator.
	  2) Constructs	an empty container with	the given allocator alloc.
	  3) Constructs	the container with count copies	of elements with value
       value.
	  4) Constructs	the container with count default-inserted instances of
       T. No copies
	  are made.
	  5)  Constructs  the container	with the contents of the range [first,
       last).

	  This constructor has the same	effect as
	  vector(static_cast<size_type>(first),	static_cast<value_type>(last),
       (until C++11)
	  a) if	InputIt	is an integral type.
	  This overload	participates in	overload resolution only if InputIt
	  satisfies LegacyInputIterator, to avoid ambiguity with the  overload
       (since C++11)
	  (3).

	  6)  Copy  constructor. Constructs the	container with the copy	of the
       contents	of
	  other.

	  The	 allocator    is     obtained	  as	 if	by     calling
       (since
	  std::allocator_traits<allocator_type>::select_on_container_copy_con-
       struction( C++11)
	  other.get_allocator()).

	  7)  Constructs the container with the	copy of	the contents of	other,
       using alloc as
	  the allocator.

	  The template parameter Allocator is  only  deduced  from  the	 first
       (since C++23)
	  argument while used in class template	argument deduction.

	  8)  Move  constructor. Constructs the	container with the contents of
       other using move
	  semantics. Allocator is obtained by move-construction	from the allo-
       cator belonging
	  to other. After the move, other is guaranteed	to be empty().
	  9) Allocator-extended	move constructor. Using	alloc as the allocator
       for the new
	  container, moving the	contents from other; if	alloc != other.get_al-
       locator(), this
	  results in an	element-wise move. (In that case, other	is not guaran-
       teed to be empty
	  after	the move.)

	  The template parameter Allocator is  only  deduced  from  the	 first
       (since C++23)
	  argument while used in class template	argument deduction.

	  10)  Constructs  the	container with the contents of the initializer
       list init.

Parameters
	  alloc	      -	allocator to use for all memory	 allocations  of  this
       container
	  count	      -	the size of the	container
	  value	      -	the value to initialize	elements of the	container with
	  first, last -	the range to copy the elements from
	  other	       -  another container to be used as source to initialize
       the elements of
			the container with
	  init	      -	initializer list to initialize	the  elements  of  the
       container with

Complexity
	  1-2) Constant
	  3-4) Linear in count
	  5) Linear in distance	between	first and last
	  6-7) Linear in size of other
	  8) Constant.
	  9) Linear if alloc !=	other.get_allocator(), otherwise constant.
	  10) Linear in	size of	init.

Exceptions
	  Calls	to Allocator::allocate may throw.

Notes
	  After	container move construction (overload (8)), references,	point-
       ers, and
	  iterators  (other  than the end iterator) to other remain valid, but
       refer to	elements
	  that are now in *this. The current standard makes this guarantee via
       the blanket
	  statement in [container.requirements.general]/12, and	a more	direct
       guarantee is
	  under	consideration via LWG 2321.

	  The overload (4) zeroes out elements of non-class types such as int,
       which is
	  different  from  the behavior	of new[], which	leaves them uninitial-
       ized. To	match the
	  behavior of new[], a custom  Allocator::construct  can  be  provided
       which leaves such
	  elements uninitialized.

	  Note	that  the presence of list-initializing	constructor (10) means
       list
	  initialization and direct initialization do different	things:

	std::vector<int> b{3}; // creates a 1-element vector holding {3}
	std::vector<int> a(3); // creates a 3-element vector holding {0, 0, 0}

	std::vector<int> d{1, 2}; // creates a 2-element vector	holding	{1, 2}
	std::vector<int> c(1, 2); // creates a 1-element vector	holding	{2}

Example
       // Run this code

	#include <vector>
	#include <string>
	#include <iostream>

	template<typename T>
	std::ostream& operator<<(std::ostream& s, const	std::vector<T>&	v)
	{
	    s.put('[');
	    char comma[3] = {'\0', ' ',	'\0'};
	    for	(const auto& e : v) {
		s << comma << e;
		comma[0] = ',';
	    }
	    return s <<	']';
	}

	int main()
	{
	    // c++11 initializer list syntax:
	    std::vector<std::string> words1 {"the", "frogurt",	"is",  "also",
       "cursed"};
	    std::cout << "words1: " << words1 << '\n';

	    // words2 == words1
	    std::vector<std::string> words2(words1.begin(), words1.end());
	    std::cout << "words2: " << words2 << '\n';

	    // words3 == words1
	    std::vector<std::string> words3(words1);
	    std::cout << "words3: " << words3 << '\n';

	    // words4 is {"Mo",	"Mo", "Mo", "Mo", "Mo"}
	    std::vector<std::string> words4(5, "Mo");
	    std::cout << "words4: " << words4 << '\n';
	}

Output:
	words1:	[the, frogurt, is, also, cursed]
	words2:	[the, frogurt, is, also, cursed]
	words3:	[the, frogurt, is, also, cursed]
	words4:	[Mo, Mo, Mo, Mo, Mo]

	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	    Applied to	      Behavior as published	   Correct be-
       havior
	  LWG 2193 C++11      the default constructor is explicit made non-ex-
       plicit

See also
	  assign    assigns values to the container
		    (public member function)
	  operator= assigns values to the container
		    (public member function)

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

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

home | help