반응형
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차원 배열을 생성하고 정렬 시 사전 순서대로 정렬되는 것처럼 정렬을 할 수 있어 편리하다.
반응형
'🟦C++' 카테고리의 다른 글
[C++] STL Stack 스택 사용법과 예제코드 (0) | 2020.12.08 |
---|---|
[C++] STL Queue 큐 사용법과 예제코드 (0) | 2020.12.07 |
[C/C++] STL sort 정렬 함수 (오름차순, 내림차순) 예제코드 (0) | 2020.11.22 |
[C/C++] 클래스와 객체 (2) | 2020.08.12 |
[C/C++] endl 와 \n의 속도차이 (0) | 2020.06.06 |