반응형

2차원 배열 혹은 벡터를 정렬하는 방법

 

int arr[3][2] = { {2,5} ,{4,3}, {7,1} };
sort(arr, arr + 3);

위와 같이 2차원 배열을 단순히 sort를 하면 아래와 같은 오류가 발생한다.

오류 C2075 '_Val': 배열 초기화에는 중괄호로 묶인 이니셜 라이저 목록이 필요합니다.
오류 C3863 배열 형식 'int [2]'은(는) 할당할 수 없습니다.

 

 

따라서 2차원 배열을 정렬하기 위해서는 vector 컨테이너에 pair를 통해서 2차원 배열을 만들 수 있다.

vector<pair<int, int>> v;

벡터 v는 위와 같이 정의하고 만약 입력받는 게 ('a',3), ('c',7) 이런 것들이라면 <int , int> 대신 아래와 같이 <char, int>로 수정해주면 된다.

vector<pair<char, int>> v;

 

<코드>

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

vector<pair<int, int>> v;
int N;
int a, b;

int main()
{
	cin >> N;
	cout << "정렬전 : " << endl;
	for (int i = 0; i < N; i++)
	{
		cin >> a >> b;
		v.push_back(pair<int, int>(a, b));
	}

	sort(v.begin(), v.end());

	cout << endl;
	cout << "정렬후 : " << endl;

	for (int i = 0; i < N; i++)
	{
		cout << v[i].first << " " << v[i].second << endl;
	}
}


 

 

벡터를 통해서 2차원 배열을 생성하고 정렬 시 사전 순서대로 정렬되는 것처럼 정렬을 할 수 있어 편리하다.

 

반응형

+ Recent posts