Aggiungi elemento al vettore di coppie in C++
-
Usa
push_back
emake_pair
per aggiungere un elemento al vettore di coppie -
Usa
push_back
e Cast per accoppiare per aggiungere un elemento al vettore di coppie -
Usa
emplace_back
per aggiungere un elemento al vettore di coppie
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);
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