std::list<T,Allocator>::assign
void assign( size_type count, const T& value ); | (1) | |
template< class InputIt > void assign( InputIt first, InputIt last ); | (2) | |
void assign( std::initializer_list<T> ilist ); | (3) | (начиная с C++11) |
Заменяет содержимое контейнера.
count копиями значения value.[first, last).Если любой из аргументов является итератором в *this, поведение не определено.
| Эта перегрузка имеет тот же эффект, что и перегрузка (1), если | (до C++11) |
| Эта перегрузка участвует в разрешении перегрузки, только если | (начиная с C++11) |
[first, last) разыменовывается ровно один раз.ilist.Все итераторы, указатели и ссылки на элементы контейнера становятся недействительными.
Параметры
| count | - | новый размер контейнера |
| value | - | значение, которым инициализируются элементы контейнера |
| first, last | - | пара итераторов, задающая исходный диапазон элементов для копирования |
| ilist | - | список инициализации, из которого копируются значения |
Сложность
count.first и last.ilist.size().Пример
В следующем коде используется assign для добавления нескольких символов в std::list<char>:
#include <list>
#include <iostream>
#include <string>
int main()
{
std::list<char> 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();
}
Вывод:
a a a a a b b b b b b C + + 1 1
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющих поведение, были применены ретроспективно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 320 | C++98 | операцию замены требовалось реализовать как удаление всех существующих элементов с последующей вставкой заданных элементов | требование удалено |
См. также
|
(C++23) | присваивает контейнеру диапазон значений (открытая функция-член) |
| присваивает значения контейнеру (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/list/assign