Añadir elemento al vector de pares en C++
-
Usa
push_back
ymake_pair
para añadir un elemento al vector de pares -
Usa
push_back
y Cast to Pair para agregar un elemento al vector de pares -
Usar
emplace_back
para añadir el elemento al vector de pares
Este artículo explicará varios métodos para añadir un elemento a un vector de pares en C++.
Usa push_back
y make_pair
para añadir un elemento al vector de pares
El contenedor vector
puede contener elementos del tipo std::pair
, que es la plantilla de clase para contener los dos tipos de objetos heterogéneos como una unidad de datos. Es similar al más conocido tipo de datos tuple
de diferentes lenguajes de programación como Python, excepto que sólo puede contener 2 elementos.
Un vector de pares se declara con la expresión - vector<pair<int, string>>
y puede ser inicializado de la misma manera que la estructura. Una vez que necesitamos empujar elementos adicionales de tipo std::pair
al vector
, se puede utilizar el método push_back
. Fíjate, sin embargo, que necesita que un elemento sea construido usando la función make_pair
.
En el siguiente ejemplo, usamos <int, string>
pares y la sintaxis para añadir un elemento al vector de pares es 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;
}
Producción :
vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);
Usa push_back
y Cast to Pair para agregar un elemento al vector de pares
Como alternativa al método anterior, podemos lanzar los valores literales a un par y luego insertar la expresión en el método push_back
. Aunque, este método es menos claro para la legibilidad y posiblemente propenso a errores para bases de código más grandes.
#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;
}
Producción :
vec1: (12,twelve); (32,thirty-two); (43,forty-three);
vec1: (12,twelve); (32,thirty-two); (43,forty-three); (55,fifty-five);
Usar emplace_back
para añadir el elemento al vector de pares
El método emplace_back
es una función incorporada del contenedor vector
que construye un nuevo elemento al final del objeto. Observa que, para que emplace_back
funcione, un tipo de elemento debe tener un constructor para args
. Ya que estamos usando la función para construir los elementos std::pair
, es seguro llamarla con valores literales como se muestra en el siguiente ejemplo de código.
#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;
}
Producción :
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