Element zu einem Vektor von Paaren in C++ hinzufügen

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie push_back und make_pair, um ein Element zu einem Vektor von Paaren hinzuzufügen
  2. Verwenden Sie push_back und Cast to Pair, um ein Element zum Vektor der Paare hinzuzufügen
  3. Mit emplace_back ein Element zum Vektor von Paaren hinzufügen
Element zu einem Vektor von Paaren in C++ 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);
Autor: 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

Verwandter Artikel - C++ Vector