Como limpar os valores dos elementos da array em C++

Jinku Hu 12 outubro 2023
  1. Utilize Builtin fill() Método para Limpar Elementos de array em C++
  2. Utilize std::fill() Algoritmo para Limpar Elementos de Array em C++
  3. Utilize fill_n() Algoritmo para Limpar Elementos do Array
Como limpar os valores dos elementos da array em C++

Este artigo apresentará múltiplos métodos sobre como limpar valores de elementos de array em C++.

Utilize Builtin fill() Método para Limpar Elementos de array em C++

O recipiente std::array fornece múltiplos métodos embutidos que operam em seus elementos, um dos quais é o método fill(). Ele atribui o valor dado a cada elemento do objeto array. Note que você pode construir um array com qualquer tipo de elemento e ainda utilizar a função fill() para passar o valor para atribuir cada membro do container.

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

using std::array;
using std::cout;
using std::endl;
using std::fill;
using std::fill_n;

int main() {
  array<int, 10> nums{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }
  cout << endl;

  nums.fill(0);

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }

  return EXIT_SUCCESS;
}

Resultado:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Utilize std::fill() Algoritmo para Limpar Elementos de Array em C++

Alternativamente, podemos utilizar o algoritmo std::fill definido na biblioteca STL <algorithm>. Este método é chamado de objeto baseado em intervalo e atribui um determinado valor a seus elementos. O intervalo de elementos é passado como os dois primeiros argumentos, e o terceiro especifica um valor a ser atribuído. A partir da versão C++17, o usuário também pode especificar a política de execução como um argumento opcional (veja os detalhes completos aqui.

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

using std::array;
using std::cout;
using std::endl;
using std::fill;
using std::fill_n;

int main() {
  array<int, 10> nums{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }
  cout << endl;

  std::fill(nums.begin(), nums.end(), 0);

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }

  return EXIT_SUCCESS;
}

Resultado:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Utilize fill_n() Algoritmo para Limpar Elementos do Array

Outro método útil do cabeçalho <algorithm> é o algoritmo fill_n, que é semelhante ao método acima, exceto que são necessários vários elementos que precisam ser modificados com o valor dado. Neste caso, especificamos o valor de retorno do método size() para emular o comportamento idêntico como no exemplo do código acima. Note que, a etiqueta de política de execução também se aplica a este método.

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

using std::array;
using std::cout;
using std::endl;
using std::fill;
using std::fill_n;

int main() {
  array<int, 10> nums{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }
  cout << endl;

  std::fill_n(nums.begin(), nums.size(), 0);

  cout << "| ";
  for (const auto &item : nums) {
    cout << item << " | ";
  }

  return EXIT_SUCCESS;
}

Resultado:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Array