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

  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

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::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::pair;
using std::make_pair;

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::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::pair;
using std::make_pair;

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::cout; using std::cin;
using std::endl; using std::string;
using std::vector; using std::pair;
using std::make_pair;

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);

Article connexe - C++ Vector

  • Comment convertir un vecteur en tableau en C++
  • Créer un vecteur de vecteurs en C++