Comment effacer les valeurs des éléments de tableau en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la méthode Builtin fill() pour effacer les éléments de tableau en C++
  2. Utilisez l’algorithme std::fill() pour effacer les éléments du tableau en C++
  3. Utiliser l’algorithme fill_n() pour effacer les éléments du tableau
Comment effacer les valeurs des éléments de tableau en C++

Cet article présente plusieurs méthodes pour effacer les valeurs des éléments de tableau en C++.

Utiliser la méthode Builtin fill() pour effacer les éléments de tableau en C++

Le conteneur std::array fournit de multiples méthodes intégrées qui opèrent sur ses éléments, dont l’une est la méthode fill(). Elle attribue la valeur donnée à chaque élément de l’objet tableau. Notez que vous pouvez construire un tableau avec n’importe quel type d’élément et toujours utiliser la fonction fill() pour passer la valeur afin d’assigner chaque membre du conteneur.

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

Production:

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

Utilisez l’algorithme std::fill() pour effacer les éléments du tableau en C++

Nous pouvons également utiliser l’algorithme std::fill défini dans la bibliothèque STL <algorithm>. Cette méthode est appelée sur un objet basé sur une plage et attribue une valeur donnée à ses éléments. La plage d’éléments est passée comme les deux premiers arguments, et le troisième spécifie une valeur à assigner. À partir de la version C++17, l’utilisateur peut également spécifier la politique d’exécution en tant qu’argument facultatif (voir les détails complets ici.

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

Production:

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

Utiliser l’algorithme fill_n() pour effacer les éléments du tableau

Une autre méthode utile de l’en-tête <algorithm> est l’algorithme fill_n, qui est similaire à la méthode ci-dessus sauf qu’il prend plusieurs éléments qui doivent être modifiés avec la valeur donnée. Dans ce cas, nous avons spécifié la valeur de retour de la méthode size() pour émuler le même comportement que dans l’exemple de code ci-dessus. Notez que la balise de politique d’exécution s’applique également dans cette méthode.

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

Production:

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

Article connexe - C++ Array