Element zu einem Vektor von Paaren in C++ hinzufügen
-
Verwenden Sie
push_back
undmake_pair
, um ein Element zu einem Vektor von Paaren hinzuzufügen -
Verwenden Sie
push_back
und Cast to Pair, um ein Element zum Vektor der Paare hinzuzufügen -
Mit
emplace_back
ein Element zum Vektor von Paaren hinzufügen
In diesem Artikel werden mehrere Methoden zum Hinzufügen eines Elements zu einem Vektor von Paaren in C++ erläutert.
Verwenden Sie push_back
und make_pair
, um ein Element zu einem Vektor von Paaren hinzuzufügen
Der Container vector
kann Elemente vom Typ std::pair
aufnehmen, was die Klassenvorlage für die Aufnahme zweier heterogener Objekttypen als eine Dateneinheit ist. Er ähnelt dem allgemein bekannteren Datentyp tuple
aus verschiedenen Programmiersprachen wie Python, mit dem Unterschied, dass er nur 2 Elemente aufnehmen kann.
Ein Vektor von Paaren wird mit dem Ausdruck - vector<pair<int, string>>
deklariert und kann auf die gleiche Weise initialisiert werden wie die Struktur. Sobald wir zusätzliche Elemente vom Typ std::pair
in den vector
schieben müssen, kann die Methode push_back
verwendet werden. Beachten Sie jedoch, dass sie ein Element benötigt, das mit der Funktion make_pair
konstruiert wurde.
Im folgenden Beispiel verwenden wir <int, string>
-Paare und die Syntax zum Hinzufügen eines Elements zum Vektor der Paare ist 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;
}
Ausgabe:
vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);
Verwenden Sie push_back
und Cast to Pair, um ein Element zum Vektor der Paare hinzuzufügen
Als Alternative zur vorherigen Methode können wir die literalen Werte in ein Paar casten und den Ausdruck dann in die Methode push_back
einfügen. Allerdings ist diese Methode weniger übersichtlich für die Lesbarkeit und wohl auch fehleranfällig für größere Codebasen.
#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;
}
Ausgabe:
vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);
Mit emplace_back
ein Element zum Vektor von Paaren hinzufügen
Die Methode emplace_back
ist eine eingebaute Funktion des Containers vector
, die ein neues Element am Ende des Objekts konstruiert. Beachten Sie, dass ein Elementtyp einen Konstruktor für args
haben sollte, damit emplace_back
funktioniert. Da wir die Funktion verwenden, um die std::pair
-Elemente zu konstruieren, ist es sicher, sie mit Literalwerten aufzurufen, wie im folgenden Codebeispiel gezeigt.
#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;
}
Ausgabe:
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