(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
Member types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deduction guides(C++17) |
void assign( size_type count,const T& value); | (1) | (constexpr since C++20) |
template<class InputIt> void assign( InputIt first, InputIt last); | (2) | (constexpr since C++20) |
void assign(std::initializer_list<T> ilist); | (3) | (since C++11) (constexpr since C++20) |
Replaces the contents of the container.
[
first,
last)
.This overload has the same effect as overload(1) if | (until C++11) |
This overload participates in overload resolution only if | (since C++11) |
All iterators (including theend()
iterator) and all references to the elements are invalidated.
Contents |
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 sourcerange of elements to copy |
ilist | - | std::initializer_list to copy the values from |
The following code usesassign
to add several characters to astd::vector<char>:
#include <vector>#include <iostream>#include <string> int main(){std::vector<char> characters; auto print_vector=[&](){for(char c: characters)std::cout<< c<<' ';std::cout<<'\n';}; characters.assign(5,'a'); print_vector(); conststd::string extra(6,'b'); characters.assign(extra.begin(), extra.end()); print_vector(); characters.assign({'C','+','+','1','1'}); print_vector();}
Output:
a a a a ab b b b b bC + + 1 1
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2209 | C++98 | the replacement operation was required to be implemented as erasing all existing elements followed by inserting the given elements | removed the requirement |
(C++23) | assigns a range of values to the container (public member function)[edit] |
assigns values to the container (public member function)[edit] |