C++에서 쌍으로 구성된 벡터에 요소 추가

Jinku Hu 2023년10월12일
  1. push_backmake_pair를 사용하여 쌍의 벡터에 요소 추가
  2. push_back 및 Cast to Pair를 사용하여 쌍의 벡터에 요소 추가
  3. emplace_back을 사용하여 쌍으로 구성된 벡터에 요소 추가
C++에서 쌍으로 구성된 벡터에 요소 추가

이 기사에서는 C++에서 쌍의 벡터에 요소를 추가하는 몇 가지 방법을 설명합니다.

push_backmake_pair를 사용하여 쌍의 벡터에 요소 추가

vector 컨테이너는std::pair 유형 요소를 보유 할 수 있으며, 이는 두 가지 이기종 객체 유형을 하나의 데이터 단위로 보유하기위한 클래스 템플릿입니다. 파이썬과 같은 다른 프로그래밍 언어에서 더 일반적으로 알려진 ‘튜플’데이터 유형과 유사하지만 2 개의 요소 만 보유 할 수 있다는 점이 다릅니다.

쌍으로 구성된 벡터는vector<pair<int, string>>표현식으로 선언되며 구조와 동일한 방식으로 초기화 될 수 있습니다. 추가std::pair 유형 요소를vector에 푸시해야하면push_back 메소드를 사용할 수 있습니다. 그러나make_pair 함수를 사용하여 구성 할 요소가 필요합니다.

다음 예제에서는<int, string>쌍을 사용하고 쌍으로 구성된 벡터에 요소를 추가하는 구문은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;
}

출력:

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

push_back 및 Cast to Pair를 사용하여 쌍의 벡터에 요소 추가

이전 방법의 대안으로 리터럴 값을 쌍으로 캐스팅 한 다음 표현식을push_back 메서드에 삽입 할 수 있습니다. 그러나이 방법은 가독성이 떨어지고 더 큰 코드베이스에서는 오류가 발생하기 쉽습니다.

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

출력:

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

emplace_back을 사용하여 쌍으로 구성된 벡터에 요소 추가

emplace_back 메소드는 객체의 끝에 새 요소를 생성하는vector 컨테이너의 내장 함수입니다. emplace_back이 작동하려면 요소 유형에args에 대한 생성자가 있어야합니다. 이 함수를 사용하여std::pair 요소를 구성하고 있으므로 다음 코드 샘플과 같이 리터럴 값으로 호출하는 것이 안전합니다.

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

출력:

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

관련 문장 - C++ Vector