Ajouter un élément au vecteur de paires en C++

Jinku Hu 12 octobre 2023
  1. Utilisez push_back et make_pair pour ajouter un élément à un vecteur de paires
  2. Utilisez push_back et cast to pair pour ajouter un élément au vecteur de paires
  3. Utilisez emplace_back pour ajouter un élément au vecteur de paires
Ajouter un élément au vecteur de paires en C++

Cet article explique plusieurs méthodes pour ajouter un élément à un vecteur de paires en C++.

Utilisez push_back et make_pair pour ajouter un élément à un vecteur de paires

Le conteneur vectoriel peut contenir des éléments de type std::pair, qui est le modèle de classe pour contenir les deux types d’objets hétérogènes comme une seule unité de données. Il est similaire au type de données tuple plus généralement connu des différents langages de programmation comme Python, sauf qu’il ne peut contenir que 2 éléments.

Un vecteur de paires est déclaré avec l’expression - vector<pair<int, string>> et il peut être initialisé de la même manière que la structure. Une fois que nous avons besoin de pousser des éléments supplémentaires de type std::pair vers le vector, la méthode push_back peut être utilisée. Notez, cependant, qu’il faut qu’un élément soit construit en utilisant la fonction make_pair.

Dans l’exemple suivant, nous utilisons des paires <int, string> et la syntaxe pour ajouter un élément au vecteur de paires est push_back(make_pair(55, "fifty-five")).

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::make_pair;
using std::pair;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << "(" << vec.at(i).first << "," << vec.at(i).second << ")"
         << "; ";
  }
  cout << endl;
}

int main() {
  vector<pair<int, string>> vec1 = {
      {12, "twelve"}, {32, "thirty-two"}, {43, "forty-three"}};

  cout << "vec1: ";
  printVectorElements(vec1);

  vec1.push_back(make_pair(55, "fifty-five"));

  cout << "vec1: ";
  printVectorElements(vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);

Utilisez push_back et cast to pair pour ajouter un élément au vecteur de paires

Comme alternative à la méthode précédente, nous pouvons attribuer les valeurs littérales à une paire et ensuite insérer l’expression dans la méthode push_back. Cependant, cette méthode est moins claire pour la lisibilité et on peut dire qu’elle est sujette à des erreurs pour des bases de code plus importantes.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::make_pair;
using std::pair;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << "(" << vec.at(i).first << "," << vec.at(i).second << ")"
         << "; ";
  }
  cout << endl;
}

int main() {
  vector<pair<int, string>> vec1 = {
      {12, "twelve"}, {32, "thirty-two"}, {43, "forty-three"}};

  cout << "vec1: ";
  printVectorElements(vec1);

  vec1.push_back(pair(55, "fifty-five"));

  cout << "vec1: ";
  printVectorElements(vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);

Utilisez emplace_back pour ajouter un élément au vecteur de paires

La méthode emplace_back est une fonction intégrée du conteneur vector qui construit un nouvel élément à la fin de l’objet. Notez que, pour que la méthode emplace_back fonctionne, un type d’élément doit avoir un constructeur pour args. Puisque nous utilisons la fonction pour construire les éléments std::pair, il est sûr de l’appeler avec des valeurs littérales comme le montre l’exemple de code suivant.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::make_pair;
using std::pair;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << "(" << vec.at(i).first << "," << vec.at(i).second << ")"
         << "; ";
  }
  cout << endl;
}

int main() {
  vector<pair<int, string>> vec1 = {
      {12, "twelve"}, {32, "thirty-two"}, {43, "forty-three"}};

  cout << "vec1: ";
  printVectorElements(vec1);

  vec1.emplace_back(55, "fifty-five");

  cout << "vec1: ";
  printVectorElements(vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Production :

vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);
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++ Vector