Aggiungi elemento al vettore di coppie in C++

Jinku Hu 12 ottobre 2023
  1. Usa push_back e make_pair per aggiungere un elemento al vettore di coppie
  2. Usa push_back e Cast per accoppiare per aggiungere un elemento al vettore di coppie
  3. Usa emplace_back per aggiungere un elemento al vettore di coppie
Aggiungi elemento al vettore di coppie in C++

Questo articolo spiegherà diversi metodi per aggiungere un elemento a un vettore di coppie in C++.

Usa push_back e make_pair per aggiungere un elemento al vettore di coppie

Il contenitore vector può contenere elementi di tipo std::pair, che è il modello di classe per contenere i due tipi di oggetti eterogenei come un’unità di dati. È simile al più noto tipo di dati tuple di diversi linguaggi di programmazione come Python, tranne per il fatto che può contenere solo 2 elementi.

Un vettore di coppie viene dichiarato con l’espressione - vector<pair<int, string>> e può essere inizializzato allo stesso modo della struttura. Una volta che abbiamo bisogno di inserire ulteriori elementi di tipo std::pair nel vettore, si può utilizzare il metodo push_back. Si noti, tuttavia, che necessita di un elemento per essere costruito utilizzando la funzione make_pair.

Nell’esempio seguente, usiamo le coppie <int, string> e la sintassi per aggiungere un elemento al vettore delle coppie è 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;
}

Produzione:

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

Usa push_back e Cast per accoppiare per aggiungere un elemento al vettore di coppie

In alternativa al metodo precedente, possiamo eseguire il cast dei valori letterali in una coppia e quindi inserire l’espressione nel metodo push_back. Tuttavia, questo metodo è meno chiaro per la leggibilità e probabilmente soggetto a errori per basi di codice più grandi.

#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;
}

Produzione:

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

Usa emplace_back per aggiungere un elemento al vettore di coppie

Il metodo emplace_back è una funzione incorporata del contenitore vector che costruisce un nuovo elemento alla fine dell’oggetto. Si noti che, affinché emplace_back funzioni, un tipo di elemento dovrebbe avere un costruttore per args. Dato che stiamo usando la funzione per costruire gli elementi std::pair, è sicuro chiamarla con valori letterali come mostrato nel seguente esempio di codice.

#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;
}

Produzione:

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

Articolo correlato - C++ Vector