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

NAME
     std::list::assign - std::list::assign

Synopsis
	void assign( size_type count, const T& value ); (1)
	template< class InputIt >			(2)
	void assign( InputIt first, InputIt last );
	void assign( std::initializer_list<T> ilist );	(3) (since C++11)

	Replaces the contents of the container.

	1) Replaces the contents with count copies of value value.
	2)  Replaces  the  contents  with  copies  of those in the range [first,
     last). The
	behavior is undefined if either argument is an iterator into *this.

	This overload has the same effect as  overload	(1)  if  InputIt  is  an
     (until C++11)
	integral type.
	This  overload	participates  in  overload  resolution	only  if InputIt
     (since C++11)
	satisfies LegacyInputIterator.

	3) Replaces the contents with the elements  from  the  initializer  list
     ilist.

	All  iterators, pointers and references to the elements of the container
     are
	invalidated.

Parameters
	count	    - the new size of the container
	value	    - the value to initialize elements of the container with
	first, last - the range to copy the elements from
	ilist	    - initializer list to copy the values from

Complexity
	1) Linear in count.
	2) Linear in distance between first and last.
	3) Linear in ilist.size().

Example
	The  following	code  uses  assign  to	add  several  characters  to   a
     std::list<char>:

     // Run this code

      #include <list>
      #include <iostream>
      #include <string>

      int main()
      {
	  std::list<char> characters;

	  auto print_list = [&]()
	  {
	      for (char c : characters)
		  std::cout << c << ' ';
	      std::cout << '\n';
	  };

	  characters.assign(5, 'a');
	  print_list();

	  const std::string extra(6, 'b');
	  characters.assign(extra.begin(), extra.end());
	  print_list();

	  characters.assign({'C', '+', '+', '1', '1'});
	  print_list();
      }

Output:
      a a a a a
      b b b b b b
      C + + 1 1

       Defect reports

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

	  DR	Applied to	     Behavior as published		 Correct
     behavior
			   the replacement operation was defined as
	LWG 320 C++98	    erasing  all				 removed
     the definition
			   existing elements followed by inserting
			   the given elements

See also
	constructor   constructs the list
		      (public member function)

http://cppreference.com 	   2024.06.10		    std::list::assign(3)

home | help