Ajouter un élément au vecteur de paires en C++
-
Utilisez
push_back
etmake_pair
pour ajouter un élément à un vecteur de paires -
Utilisez
push_back
et cast to pair pour ajouter un élément au vecteur de paires -
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::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);
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