반응형

 

알고리즘 문제를 풀 때 큐(queue)나 스택(stack)에 push 할 때 아래와 같이 파라미터를 보통 1개나 2개를 넣는 경우가 많습니다. 

#include<iostream>
#include<queue>
using namespace std;

int x, y, z;
queue<pair<int, int>> q;

int main()
{
	x = 3;
	y = 5;

	q.push(make_pair(x, y));

	cout << q.front().first << " " << q.front().second;

}

 

 

그러나 pair는 인자를 최대 2개까지밖에 만들지 못하므로 인자가 3개이상일 때는 tuple을 사용하여 묶을 수 있습니다.

 

#include<iostream>
#include<tuple>
#include<queue>
using namespace std;

int x, y, z;
queue<tuple<int, int, int>> q;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	x = 3;
	y = 5;
	z = 7;

	q.push(make_tuple(x, y, z));

	cout << get<0>(q.front()) << " ";
	cout << get<1>(q.front()) << " ";
	cout << get<2>(q.front()) << " ";
}

 

pair에서는 아래와 같이 값을 push한 다음

queue<pair<int, int>> q;
q.push(make_pair(a,b));

q.front().firstq.front().second로 a와 b에 접근할 수 있고,

 

tuple에서는 아래와 같이 값을 push 한 다음

queue<tuple<int, int, int>> q;
q.push(make_tuple(a,b,c));

get<0>(q.front()) 로 a를,
get<1>(q.front()) 로 b를,
get<2>(q.front()) 로 c를 접근할 수 있게 된다.

반응형

+ Recent posts