반응형
구조체를 정렬하는 방법에 대해서 알아봅시다.
sort 함수는 당연히 구조체를 정렬 할 수 있습니다.
일반적으로 c++에서 제공되는 데이터 형인 int, double의 경우는 별다른 함수를 제공하지 않고도 사용할 수 있지만, 우리가 정의한 데이터 형들은 함수를 제공해 주어야 합니다.
sort에 제공할 함수 형태는 다음과 같습니다
int 함수이름 (const 데이터형 a, const 데이터형 b) { 순서가 제대로인 경우 0이 아닌 값 순서가 바뀐 경우는 0을 리턴해야 한다. } |
리턴은 정수형이 되어야 하며, 정렬할 데이터 형이 a와 b 변수이 데이터 형으로 선언되어야 합니다.
a와 b는 배열 내에서 앞에 있는 원소가 a, 뒤에 있는 원소가 b가 된다.
따라서, 두 원소의 값이 원하는 정렬 순서라면 0이 아닌 값을 리턴하도록 작성해야 하며,
원하는 순서가 아닌 경우는 0이 리턴되도록 해야 한다.
이전에 선언한 data 구조체 형에서 마지막 c 자료를 기준으로 정려하려면 sort에 제공할 함수는 다음과 같다.
int cmp(data a, data b) { return a.c < b.c; } |
이제 입력된 데이터를 마지막 열을 기준으로 정렬하는 코드를 살펴보자.
#include <iostream>
#include <algorithm>
using namespace std;
struct data{
int a, b, c;
};
int cmp(data a, data b)
{
return a.c < b.c;
}
int main()
{
data arr[100];
int i, n;
cin >> n;
for(i=0;i<n;i++)
cin >> arr[i].a >> arr[i].b >> arr[i].c;
sort(arr, arr+n, cmp);
for(i=0;i<n;i++)
cout << arr[i].a << " " << arr[i].b << " " << arr[i].c << '\n';
return 0;
}
[ 정렬 문제 풀기 ] edukoi.tistory.com/14?category=841618
반응형
'C++ 언어' 카테고리의 다른 글
6. C/C++ 연결리스트 (0) | 2021.01.18 |
---|---|
5. C/C++ 함수 기초 (0) | 2020.11.23 |
4. C/C++ 동적 메모리 (0) | 2020.11.05 |
3. C/C++ 연산자 (0) | 2020.09.25 |
2. C/C++ 함수 - 인수 전달 방법 (0) | 2020.09.24 |