From cppreference.com
voidassign(size_typecount,constT&value); (1) template<classInputIt>voidassign(InputItfirst,InputItlast); (2) voidassign(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).
If either argument is an iterator into *this, the behavior is undefined.
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
.
(since C++11) Each iterator in the range [first, last) is dereferenced exactly once.
3) Replaces the contents with the elements from ilist.
All iterators (including the
iterator) and all references to the elements are invalidated.
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
of elements to copy ilist - the 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::deque<char>:
Run this code
#include<deque>#include<iostream>#include<string>intmain(){std::deque<char>characters;autoprint_deque=[&](){for(charc:characters)std::cout<<c<<' ';std::cout<<'\n';};characters.assign(5,'a');print_deque();conststd::stringextra(6,'b');characters.assign(extra.begin(),extra.end());print_deque();characters.assign({'C','+','+','1','1'});print_deque();}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
C++98 the replacement operation was required to be implemented as
erasing all existing elements followed by inserting the given elements removed the
requirement See also
(C++23)
assigns a range of values to the container
(public member function)
assigns values to the container
(public member function)