Cancella i valori degli elementi array in C++

Jinku Hu 12 ottobre 2023
  1. Usa il metodo fill() integrato per cancellare gli elementi dell’array in C++
  2. Usa l’algoritmo std::fill() per cancellare gli elementi dell’array in C++
  3. Usa l’algoritmo fill_n() per cancellare gli elementi dell’array
Cancella i valori degli elementi array in C++

Questo articolo introdurrà più metodi su come cancellare i valori degli elementi dell’array in C++.

Usa il metodo fill() integrato per cancellare gli elementi dell’array in C++

Il contenitore std::array fornisce più metodi incorporati che operano sui suoi elementi, uno dei quali è il metodo fill(). Assegna il valore dato a ciascun elemento dell’oggetto array. Nota che puoi costruire un array con qualsiasi tipo di elemento e ancora usare la funzione fill() per passare il valore da assegnare a ogni membro del contenitore.

#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;
}

Produzione:

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

Usa l’algoritmo std::fill() per cancellare gli elementi dell’array in C++

In alternativa, possiamo utilizzare l’algoritmo std::fill definito nella libreria STL <algorithm>. Questo metodo viene chiamato su un oggetto basato su intervallo e assegna un determinato valore ai suoi elementi. L’intervallo di elementi viene passato come i primi due argomenti e il terzo specifica un valore da assegnare. A partire dalla versione C++ 17, l’utente può anche specificare la policy di esecuzione come argomento opzionale (vedere i dettagli completi qui.

#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;
}

Produzione:

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

Usa l’algoritmo fill_n() per cancellare gli elementi dell’array

Un altro metodo utile dall’intestazione <algorithm> è l’algoritmo fill_n, che è simile al metodo precedente tranne per il fatto che richiede diversi elementi che devono essere modificati con il valore dato. In questo caso, abbiamo specificato il valore di ritorno del metodo size() per emulare il comportamento identico come nell’esempio di codice sopra. Tieni presente che il tag dei criteri di esecuzione si applica anche a questo metodo.

#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;
}

Produzione:

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Autore: 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

Articolo correlato - C++ Array