Función fill de C++ <array>

C++ 容器类 <array>Clase de contenedor <array> de C++


filles la función utilizada en array pararellenar todos los elementos, que puede establecer rápidamente todos los elementos al mismo valor.

filles una función miembro de la clase contenedor, utilizada paraestablecer todos los elementos del contenedor al valor especificado. Esta es una operación O(n), que requiere recorrer todos los elementos.

fillEs una forma rápida de inicializar o restablecer el array.

Significado de la palabra: fillSignifica "rellenar", es decir, establecer todos los elementos al valor especificado.


Sintaxis básica y parámetros

fillEs una función miembro de la clase contenedor y se debe especificar el valor de relleno.

Formato de sintaxis

void fill(const T& value);

Descripción de parámetros

  • Parámetro: value
    • Tipo: Igual al tipo de los elementos del contenedor
    • Descripción: El valor que se rellenará en todos los elementos.

Descripción de la función

  • Valor de retorno: void(Sin valor de retorno).
  • Efecto: Establece cada elemento del contenedor avalue。
  • Nota: fillModificará todos los elementos del contenedor.

Ejemplo

Vamos a dominar completamente mediante una serie de ejemplosfillel uso de fill.

Ejemplo 1: Uso básico - Rellenar con el mismo valor

Ejemplo

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> numbers = {1, 2, 3, 4, 5};

    std::cout << "Antes de rellenar: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    // Rellenar todos los elementos con 0
    numbers.fill(0);

    std::cout << "Después de rellenar: ";
    for(int n : numbers) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Resultado esperado de la ejecución:

填充前: 1 2 3 4 5
填充后: 0 0 0 0 0

Análisis del código:

  1. numbers.fill(0)Establece los 5 elementos a 0.
  2. Esta es una operación O(n), recorre todos los elementos y asigna el valor.

Ejemplo 2: Inicializar a un valor específico

Usar fillfillpuede inicializar rápidamente el array.

Ejemplo

#include <iostream>
#include <array>
#include <string>

int main() {
    // Crear e inicializar a -1
    std::array<int, 10> scores;
    scores.fill(-1);

    std::cout << "Inicializado a -1: ";
    for(int s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;

    // Crear e inicializar a una cadena vacía
    std::array<std::string, 3> names;
    names.fill("Unknown");

    std::cout << "Inicializado a Unknown: ";
    for(const auto& n : names) {
        std::cout << n << " ";
    }
    std::cout << std::endl;

    return 0;
}

Resultado esperado de la ejecución:

初始化为 -1: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
初始化为 Unknown: Unknown Unknown Unknown

Análisis del código:

  • fillSe puede utilizar para inicializar rápidamente un array de cualquier tipo.
  • Para enteros, comúnmente se usa 0 o -1; para cadenas, se usa una cadena vacía o un marcador de posición específico.
  • Ejemplo 3: Restablecer el array

    fillSe puede utilizar para restablecer el array a su estado inicial.

    Ejemplo

    #include <iostream>
    #include <array>

    int main() {
        std::array<int, 5> buffer;

        // Inicializar a 1-5
        for(int i = 0; i < 5; ++i) {
            buffer[i] = i + 1;
        }

        std::cout << "Datos iniciales: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        // Simular el restablecimiento después de usar el buffer
        buffer.fill(0);

        std::cout << "Después de restablecer: ";
        for(int n : buffer) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Resultado esperado de la ejecución:

    初始数据: 1 2 3 4 5
    重置后: 0 0 0 0 0
    

    Análisis del código:

    • fillPuede restablecer rápidamente el array a un estado conocido.
    • Esto es útil cuando se necesita usar el mismo búfer varias veces.

    Ejemplo 4: Usar fill junto con std::generate

    fillSe utiliza junto con algoritmos de STL.

    Ejemplo

    #include <iostream>
    #include <array>
    #include <algorithm>

    int main() {
        std::array<int, 10> numbers;

        // Usar fill para rellenar el valor inicial
        numbers.fill(1);

        std::cout << "Después de rellenar 1: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        // Incrementar cada elemento
        for(auto& n : numbers) {
            n *= 2;
        }

        std::cout << "Después de duplicar: ";
        for(int n : numbers) std::cout << n << " ";
        std::cout << std::endl;

        return 0;
    }

    Análisis del código:

    • fillSe utiliza para establecer el valor inicial.
    • Después, se puede procesar aún más con bucles o algoritmos.

    C++ 容器类 <array>Clase de contenedor <array> de C++

    Otras extensiones