반응형

구조체를 정렬하는 방법에 대해서 알아봅시다.

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

 

2. C++ vector 정렬 - 11문제

https://edukoi.tistory.com/88?category=841618 26. c++ 구조체 정렬하는 방법 구조체를 정렬하는 방법에 대해서 알아봅시다. sort 함수는 당연히 구조체를 정렬 할 수 있습니다. 일반적으로 c++에서 제공되는 데

edukoi.tistory.com

 

반응형

'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
Posted by 명문코딩컴퓨터
,