C++ <array> функция fill
fillиспользуется в array дляЗаполнить все элементыФункция, которая может быстро установить все элементы в одно и то же значение.
fillявляется функцией-членом класса контейнера, используемой дляУстановить все элементы в контейнере в указанное значение.Это операция O(n), требующая перебора всех элементов.
fillЯвляется сокращением для инициализации или сброса массива.
Определения слов: fillОзначает "fill", т. е. установку всех элементов в указанное значение.
Базовый синтаксис и параметры
fillЯвляется функцией-членом класса контейнера, требующей указанного значения заполнения.
Формат синтаксиса
void fill(const T& value);
Описание параметра
- Параметр:
value- Тип: такой же, как тип элемента контейнера
- Описание: значение, которым заполняются все элементы.
Описание функции
- Возвращаемое значение:
void(Нет возвращаемого значения). - Эффект: Установить каждый элемент контейнера в
value。 - Примечание:
fillизменяет все элементы в контейнере.
Пример
Давайте тщательно освоим это на серии примеров.fillИспользование.
Пример 1: Базовое использование — заполнение одним и тем же значением
Пример
#include <array>
int main() {
std::array<int, 5> numbers = {1, 2, 3, 4, 5};
std::cout << "Перед заполнением: ";
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
// Заполнить все элементы значением 0
numbers.fill(0);
std::cout << "После заполнения: ";
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
Ожидаемый результат выполнения:
填充前: 1 2 3 4 5 填充后: 0 0 0 0 0
Анализ кода:
numbers.fill(0)Установить все 5 элементов в 0.- Это операция O(n), проходящая по всем элементам и присваивающая значения.
Пример 2: Инициализация конкретным значением
Использованиеfillможет быстро инициализировать массив.
Пример
#include <array>
#include <string>
int main() {
// Создать и инициализировать значением -1
std::array<int, 10> scores;
scores.fill(-1);
std::cout << "Инициализировано значением -1: ";
for(int s : scores) {
std::cout << s << " ";
}
std::cout << std::endl;
// Создать и инициализировать пустой строкой
std::array<std::string, 3> names;
names.fill("Неизвестно");
std::cout << "Инициализировано значением Неизвестно: ";
for(const auto& n : names) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
Ожидаемый результат выполнения:
初始化为 -1: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 初始化为 Unknown: Unknown Unknown Unknown
Анализ кода:
fillМожно использовать для быстрой инициализации массива любого типа.- Для целых чисел обычно используется 0 или -1; для строк обычно используется пустая строка или определённый заполнитель.
Пример 3: Сброс массива
fillможно использовать для сброса массива в исходное состояние.
Пример
#include <array>
int main() {
std::array<int, 5> buffer;
// Инициализировать значениями 1-5
for(int i = 0; i < 5; ++i) {
buffer[i] = i + 1;
}
std::cout << "Исходные данные: ";
for(int n : buffer) std::cout << n << " ";
std::cout << std::endl;
// Имитация сброса после использования buffer
buffer.fill(0);
std::cout << "После сброса: ";
for(int n : buffer) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Ожидаемый результат выполнения:
初始数据: 1 2 3 4 5 重置后: 0 0 0 0 0
Анализ кода:
fillПозволяет быстро сбросить массив в известное состояние.- Это полезно, когда один и тот же буфер необходимо использовать несколько раз.
Пример 4: Использование fill с std::generate
fillиспользуется вместе с алгоритмами STL.
Пример
#include <array>
#include <algorithm>
int main() {
std::array<int, 10> numbers;
// Используйте fill для заполнения начальных значений
numbers.fill(1);
std::cout << "После fill 1: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
// Увеличить каждый элемент
for(auto& n : numbers) {
n *= 2;
}
std::cout << "После удвоения: ";
for(int n : numbers) std::cout << n << " ";
std::cout << std::endl;
return 0;
}
Анализ кода:
fillиспользуется для установки начальных значений.- После этого его можно дополнительно обработать с помощью циклов или алгоритмов.
Другие расширения