std::list<T,Allocator>::assign - cppreference.com (original) (raw)

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 [first, last).

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.

  1. Replaces the contents with the elements from ilist.

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

[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 #include #include   int main() { std::list 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 retroactively to previously published C++ standards.

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

[edit] See also

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