[C++] Natural Sort 사용하기


 

숫자, 이름이 여러 섞여 있는 내용의 문자열에 대해 윈도우 탐색기와 같은 정렬을 기대하려면 Natural Sort 라는 정렬을 시행해야 합니다. Natural Sort 란 쉽게 말해서 인간이 하는 방식으로 영문자 숫자를 정렬하는 방식을 이야기 합니다. 파이썬에선 natsort 라는 라이브러리가 있어서 그냥 pip install 로 설치하고 사용하면 끝이였는데

 

C++에서는 당연하게도 직접 구현해야 합니다.

제목을 보시면 알겠지만 Natural Sort 구현하기가 아니라 '사용하기' 입니다. 깃허브에 이미 친절하게 구현을 해둔 분이 있어서 이걸 사용하시면 됩니다.

 

https://github.com/scopeInfinity/NaturalSort

 

GitHub - scopeInfinity/NaturalSort: C++ Header File for Natural Comparision and Natural Sort

C++ Header File for Natural Comparision and Natural Sort - GitHub - scopeInfinity/NaturalSort: C++ Header File for Natural Comparision and Natural Sort

github.com

 

Usage

깃허브에 가서 natural_sort.hpp 부분만 따로 다운로드 하거나 복사해서 프로젝트에 추가합니다.

 

이후 사용할 곳에서 #include "natural_sort.hpp" 로 추가를 해주시고

 

vector<string> v에 대해 요소 정렬을 원하시면

단순히 SI::natural::sort(v); 만 호출해주시면 natural sort로 정렬이 잘 됩니다.

 

이외 자세한 예제들은 natural_sort_test.cpp 에 적혀있는 듯 하니 이걸 보고 사용하시면 되겠습니다.

 

번외

기존에 C++ 프로그래밍을 하면서 헤더 파일을 C에서 쓰던 *.h라는 이름 그대로 사용했는데 이번에 *.hpp 라는 새로운 파일을 보게 되었습니다. 이게 뭐지? 했는데 컴파일러 입장이 아니라 인간이 보기에 이 헤더 파일이 C에서 사용하는지 C++ 에서 사용하는지 구분하기 위해 이름을 구분해서 적어주는 듯 합니다.

 

즉 C에선 *.h라는 이름의 헤더 파일로, C++에서는 *.hpp 라는 이름으로 작성하는 듯 합니다.

무조건 hpp로 적는게 좋은 거 같았는데 아래 글을 보니 또 아닌듯 합니다..?

 

C++에서는 *.h , *.hpp 모두 사용하니 이런게 있다 정도만 알아두면 될 듯 합니다..

 

https://psyminsu.tistory.com/2

 

C++ 에서 .h 와 .hpp

C++ 언어가 만들어지면서 헤더 파일 과 소스 파일의 확장자는 C 언어와 동일하게 .h 와 .c로 되어 있었다. 개발자들 사이에서 C++ 에 해당하는 소스 코드를 C 언어와 구분하기 위하여 확장자를 변형

psyminsu.tistory.com

 

COMMENT WRITE