C++에서 쌍으로 구성된 벡터에 요소 추가
-
push_back
및make_pair
를 사용하여 쌍의 벡터에 요소 추가 -
push_back
및 Cast to Pair를 사용하여 쌍의 벡터에 요소 추가 -
emplace_back
을 사용하여 쌍으로 구성된 벡터에 요소 추가
이 기사에서는 C++에서 쌍의 벡터에 요소를 추가하는 몇 가지 방법을 설명합니다.
push_back
및make_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);
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