Namespaces
Variants
Actions

std::list<T,Allocator>::assign

From cppreference.com
< cpp‎ | container‎ | list
 
 
 
 
void assign( size_type count, const T& value );
(1)(constexpr since C++26)
template<class InputIt >
void assign( InputIt first, InputIt last );
(2)(constexpr since C++26)
void assign(std::initializer_list<T> ilist );
(3)(since C++11)
(constexpr since C++26)

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 [firstlast).

This overload has the same effect as overload (1) if InputIt is an integral type.

(until C++11)

This overload participates in overload resolution only if InputIt satisfies the requirements of LegacyInputIterator.

(since C++11)
If first or last is an iterator into *this, the behavior is undefined.
3) Replaces the contents with the elements from ilist.

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

Contents

[edit]Parameters

count - the new size of the container
value - the value to initialize elements of the container with
first, last - the pair of iterators defining the source range of elements to copy
ilist - std::initializer_list to copy the values from

[edit]Complexity

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

[edit]Example

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

#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();   conststd::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 retroactively to previously published C++ standards.

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

[edit]See also

assigns a range of values to the container
(public member function)[edit]
assigns values to the container
(public member function)[edit]
close