🟦C++
[C/C++] 2차원 배열 정렬하는 방법 (vector)
Cocoon_
2020. 11. 28. 21:47
반응형
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차원 배열을 생성하고 정렬 시 사전 순서대로 정렬되는 것처럼 정렬을 할 수 있어 편리하다.
반응형