std::forward_list<T,Allocator>::assign
From cppreference.com
< cpp | container | forward list
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Containers library
(C++17)
(C++11)
(C++26)
(C++26)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++23)
(C++23)
(C++23)
(C++23)
(C++20)
(C++23)
Tables
std::forward_list
Non-member functions
Deduction guides (C++17)
forward_list::assign
(C++23)
(C++23)
(C++23)
(C++20)
(C++20)(C++20)
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)
void assign( size_type count, const T& value );
(1)
(since C++11) (constexpr since C++26)
template< class InputIt >
void assign( InputIt first, InputIt last );
(2)
(since C++11) void assign( InputIt first, InputIt last );
(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.
This overload participates in overload resolution only if InputIt
satisfies the requirements of LegacyInputIterator.
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.
[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::forward_list <char>:
Run this code
#include <forward_list> #include <iostream> #include <string> int main() { std::forward_list <char> characters; auto print_forward_list = [&]() { for (char c : characters) std::cout << c << ' '; std::cout << '\n'; }; characters.assign(5, 'a'); print_forward_list(); const std::string extra(6, 'b'); characters.assign(extra.begin(), extra.end()); print_forward_list(); characters.assign({'C', '+', '+', '1', '1'}); print_forward_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 2209 | C++11 | the replacement operation was required to be implemented as erasing all existing elements followed by inserting the given elements |
removed the requirement |