std::vector<T,Allocator>::assign
| (1) | ||
void assign( size_type count, const T& value ); | (до C++20) | |
constexpr void assign( size_type count, const T& value ); | (с C++20) | |
| (2) | ||
template< class InputIt > void assign( InputIt first, InputIt last ); | (до C++20) | |
template< class InputIt > constexpr void assign( InputIt first, InputIt last ); | (с C++20) | |
| (3) | ||
void assign( std::initializer_list<T> ilist ); |
(с C++11) (до C++20) | |
constexpr void assign( std::initializer_list<T> ilist ); | (с C++20) |
Заменяет содержимое контейнера.
1) Заменяет содержимое на
count копий значения value.
2) Заменяет содержимое копиями элементов из диапазона
[first, last). Поведение не определено, если любой из аргументов является итератором в *this. | Этот перегрузчик имеет тот же эффект, что и перегрузчик (1), если | (до C++11) |
| Этот перегрузчик участвует в разрешении перегрузки только если | (с C++11) |
3) Заменяет содержимое элементами из списка инициализации
ilist.Все итераторы, указатели и ссылки на элементы контейнера становятся недействительными. Итератор, указывающий на конец контейнера, также становится недействительным.
Параметры
| count | - | новый размер контейнера |
| value | - | значение, используемое для инициализации элементов контейнера |
| first, last | - | диапазон для копирования элементов |
| ilist | - | список инициализации для копирования значений |
Сложность
1) Линейная от
count.
2) Линейная от расстояния между
first и last.
3) Линейная от
ilist.size().Пример
Следующий код использует assign для добавления нескольких символов в std::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();
const std::string extra(6, 'b');
characters.assign(extra.begin(), extra.end());
print_vector();
characters.assign({'C', '+', '+', '1', '1'});
print_vector();
}Вывод:
a a a a a b b b b b b C + + 1 1
См. также
создаёт vector (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/vector/assign