**Autonomous driving tech./*C++

[C++] 03.15 review <algorithm> sort(), stable_sort(), auto

2wnswoo 2025. 3. 15. 12:11

*알고리즘 ( <algorithms> )라이브러리 : 데이터를 정렬, 탐색, 처리하는 함수 모음, 대표적으로 정렬을 하는 sort(), find()

sort() 와 stable_sort()의 차이
  • sort() : 값이 있어도 들어온 순서를 고려하지 않고 정렬하는 것
  • stable_sort()  : 같은 값이 있을 때 들어온 순서를 고려야하여 정렬하는 것을 말한다.

주문한 순서가 다음과 같다고 하자
Sort()를 사용하면 같은 값인 치즈피자의 들어온 순서를 고려하지 않고 정렬한다. ( Unstable 정렬이라고 함 ) >> 시간면에서 빠르게 처리할 수 있는 장점있는 함수
그러나 stable_sort(vec.begin(), vec.end()); 를 했을 때 페페로니를 추가 토핑으로한 치즈피자가 먼저 나온 것을 확인할 수 있다. >> 같은 값이더라도 들어온 순서를 고려함

 

sort(vec.begin(), vec.end(), greater<int>()); >> greater<int>() 했을시 내림차순 정렬됨

 

자율주행에서 이 개념을 도입해보자,

🎯 🚗 자율주행에서는 언제 필요할까?

  • 차량 리스트를 "속도" 기준으로 정렬하는데, 같은 속도일 때 "먼저 감지된 차량" 순서 유지해야 할 때 👉 stable_sort()
  • 장애물 거리를 정렬할 때, 그냥 가까운 순서대로만 정렬하면 됨 👉 sort()

최종정리하면,

🚀 최종 정리

  • sort(): 같은 값이 있어도 들어온 순서를 고려하지 않고 정렬
  • stable_sort(): 같은 값이 있을 때 들어온 순서를 유지하면서 정렬

 

--

auto 키워드의 사용시 이점

🚀 auto를 사용하면 뭐가 좋아?

1️⃣ 긴 타입 선언을 줄일 수 있음 (특히 STL 컨테이너에서 유용함)
2️⃣ 코드가 짧아지고 가독성이 좋아짐
3️⃣ 유지보수가 쉬워짐 (타입이 바뀌어도 auto는 자동으로 맞춰짐)

예를 들면,

컨테이너 함수 vector()에서 보자,

 

선언시 

vector<int> vec = {1,2,3,4,5} 와 같이 긴 코드이다.

 

이를 

auto vec = vector<int>{1,2,3,4,5} 로 줄일 수 있다.

> 타입을 자동으로 추론

 

그러나, auto를 남발 사용은 금지다.

 

auto 키워드는 사용에 편의성은 있지만 컴파일러에게 자료형 추론을 하는 데 많은 연산을 맡기는 것이므로 적절한 곳에서 제한적으로 사용해야한다.

'**Autonomous driving tech. > *C++' 카테고리의 다른 글

[C++] 03.17 review Unique_ptr  (0) 2025.03.17
[C++] 03.14 review <cmath>, <vector>  (0) 2025.03.14
[C++] 03.04 review  (0) 2025.03.04
[C++] 03.03 review  (0) 2025.03.03
[C++] 03.02 review  (0) 2025.03.02