public member function
<list>
std::list::assign
range (1) |
template <class InputIterator>
void assign (InputIterator first, InputIterator last);
|
---|
fill (2) |
void assign (size_type n, const value_type& val);
|
---|
range (1) |
template <class InputIterator>
void assign (InputIterator first, InputIterator last);
|
---|
fill (2) |
void assign (size_type n, const value_type& val);
|
---|
initializer list (3) |
void assign (initializer_list<value_type> il); |
---|
Assign new content to container
Assigns new contents to the list container, replacing its current contents, and modifying its size accordingly.
In the
range version (1), the new contents are elements constructed from each of the elements in the range between
first and
last, in the same order.
In the
fill version (2), the new contents are
n elements, each initialized to a copy of
val.
Any storage needed for the assigned elements is allocated using the
internal allocator.
Any elements held in the container before the call are
destroyed and replaced by newly constructed elements (no assignments of elements take place).
In the
range version (1), the new contents are elements constructed from each of the elements in the range between
first and
last, in the same order.
In the
fill version (2), the new contents are
n elements, each initialized to a copy of
val.
In the
initializer list version (3), the new contents are copies of the values passed as initializer list, in the same order.
If there are changes in storage, the
internal allocator is used (through its
traits). It is also used to
destroy all existing elements, and to
construct the new ones.
Any elements held in the container before the call are either
assigned to or
destroyed.
Parameters
- first, last
- Input iterators to the initial and final positions in a sequence. The range used is [first,last), which includes all the elements between first and last, including the element pointed by first but not the element pointed by last.
The function template argument InputIterator shall be an input iterator type that points to elements of a type from which value_type objects can be constructed.
- n
- New size for the container.
Member type size_type is an unsigned integral type.
- val
- Value to fill the container with. Each of the n elements in the container will be initialized to a copy of this value.
Member type value_type is the type of the elements in the container, defined in list as an alias of its first template parameter (T).
- il
- An initializer_list object. The compiler will automatically construct such objects from initializer list declarators.
Member type value_type is the type of the elements in the container, defined in list as an alias of its first template parameter (T).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
// list::assign
#include <iostream>
#include <list>
int main ()
{
std::list<int> first;
std::list<int> second;
first.assign (7,100); // 7 ints with value 100
second.assign (first.begin(),first.end()); // a copy of first
int myints[]={1776,7,4};
first.assign (myints,myints+3); // assigning from array
std::cout << "Size of first: " << int (first.size()) << '\n';
std::cout << "Size of second: " << int (second.size()) << '\n';
return 0;
}
| |
Output:
Size of first: 3
Size of second: 7
|
Complexity
Linear in initial and final sizes (destructions, constructions).
Iterator validity
All iterators, references and pointers related to this container are invalidated, except the end iterators.
Data races
All copied elements are accessed.
The container is modified.
All contained elements are modified.
Exception safety
Basic guarantee: if an exception is thrown, the container is in a valid state.
If allocator_traits::construct is not supported with the appropriate arguments for the element constructions, or if the range specified by [first,last) is not valid, it causes undefined behavior.