C++ - STL라이브러리 piar

컴퓨터/C++

728x90
반응형

서론

C++에서 제공하는 STL 라이브러리에서 가장 기본적인 형태의 컨테이너인 pair를 사용해보도록 합시다.

두 개의 객체를 한쌍으로 묶어서 담을 수 있는 pair형 자료구조는 효율적으로 데이터를 다루는데 비약적인 효과를 발휘할 수 있습니다.

 

사용하기 전에 

pair클래스를 사용하기 위해서는 pair클래사용하기 위해 라이브러리를 추가해 주어야 합니다.

//STL 라이브러리 pair가 포함된 헤더 파일
//3개중 하나만 추가해도 pair의 사용 가능
#include <utility>
#include <algorithm>
#include <vector>

 

piar의 구조 확인해 보기

template <class _Ty1, class _Ty2>
struct pair { // store a pair of values
    using first_type  = _Ty1;
    using second_type = _Ty2;

VisualStudio를 통해 정의를 확인해 보면 위와 같이 돼있는 것을 확인할 수 있습니다. 

아직 teplate에 대하여 설명하지는 않았지만 간단하게 위의 내용을 설명하자면 다음과 같습니다.

  • 구조체 pair에 2개의 변수가 존재한다.
    • 첫 번째 변수는 first_type으로 _Ty1의 값을 취한다.
    • 두 번째 변수는 second_type _Ty2의 값을 취한다.

다시 설명하면 어떠한 자료형이든 담을 수 있으며, 2개의 담긴 형태를 쌍의 형태로 취해 보관하게 됩니다.

 

pair 사용해보기 

소스코드를 이용해서 pair를 선언하고 사용해봅시다.

  • 선언
int main() {
	pair<int, int> pair1;
	pair<int, string> pair2;
	return 0;
}

두 개의 pair를 만들었습니다. 

pair1은 정수형 변수 2개를 담을 수 있으며, pair2는 정수와, 문자열을 담는 형태입니다.

 

  • 선언 및 초기화

선언과 동시에 값을 넣어줄 수도 있습니다.

int main() {
	pair<int, int> pair1 = { 1,1 };
	pair<int, string> pair2 = { 1,"홍길동" };
	return 0;
}
  • 값의 접근

pair는 한쌍의 데이터를 담는 자료구조입니다. pair안에는 first와 second로 값을 접근할 수 있습니다.

int main() {

	pair<int, int> pair1 = { 1,1 };
	pair<int, string> pair2 = { 1,"홍길동" };

	cout << pair2.first << endl;
	cout << pair2.second << endl;

	return 0;
}

 

  • 값의 수정
int main() {

	pair<int, int> pair1 = { 1,1 };
	pair<int, string> pair2 = { 1,"홍길동" };

	cout << pair2.first << endl;
	cout << pair2.second << endl;

	pair2 = { 2,"이순신" };
	cout << pair2.first << endl;
	cout << pair2.second << endl;

	pair2.first = 3;
	pair2.second = "아저씨";
	cout << pair2.first << endl;
	cout << pair2.second << endl;
	return 0;
}

예제 소스코드처럼 pair 자체의 값을 한 번에 변경하거나 각각의 원소에 접근하여 변경할 수 있습니다.

 

이처럼 다양한 자료 형태의 데이터를 한쌍의 형태로 손쉽게 담을 수 있는 C++의 pair에 대해 알아보았습니다. 

앞으로 자주 사용하는 STL 자료구조를 알아보면서 편하게 데이터를 다루는 방법을 습득해 봅시다.

728x90
반응형

'컴퓨터 > C++' 카테고리의 다른 글

C++ - 배열 vector와 2차원 vector  (0) 2022.03.29
C++ - STL vector 클래스 (손쉬운 동적배열)  (0) 2022.03.21
C++ - STL(Standard Template Libary)  (0) 2022.03.17

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :