Añadir elemento al vector de pares en C++

Jinku Hu 12 octubre 2023
  1. Usa push_back y make_pair para añadir un elemento al vector de pares
  2. Usa push_back y Cast to Pair para agregar un elemento al vector de pares
  3. Usar emplace_back para añadir el elemento al vector de pares
Añadir elemento al vector de pares en C++

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);
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

Artículo relacionado - C++ Vector