알고리즘 이란?
전역함 수로 선언된 컨테이너들의 작업을 도와주는 여러 가지 기능들이 정의되어 있는 라이브러리이다.
정렬알고리즘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
|
template<typename T>
bool Less(T _Dst, T _Src)
{
return _Dst < _Src;
}
void main()
{
vector<int> vecint;
vecint.reserve(4);
vecint.push_back(20);
vecint.push_back(40);
vecint.push_back(10);
vecint.push_back(30);
sort(vecint.begin(), vecint.end(), Less<int>);
for (vector<int>::iterator iter = vecint.begin(); iter != vecint.end(); iter++)
{
cout << *iter << endl;
}
}
|
cs |
1,5 행 : 내림차순을 하는 알고리즘을 정의
16행 : 정렬 알고리즘을 수행 시작 위치, 끝 위치, 알고리즘을 매개변수로 반환받는다.
정렬 알고리즘은 배열 기반의 컨테이너만 사용 가능하다.
표준 알고리즘
알고리즘을 사용하기 위해서 Less를 만드는 건 상당히 불편하다.
그렇기 때문에 c++은 기본 알고리즘 함수가 정의되어 있다.
#include <functional>을 가져와야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
|
void main()
{
vector<int> vecint;
vecint.reserve(4);
vecint.push_back(20);
vecint.push_back(40);
vecint.push_back(10);
vecint.push_back(30);
sort(vecint.begin(), vecint.end(), less<int>());
for (vector<int>::iterator iter = vecint.begin(); iter != vecint.end(); iter++)
{
cout << *iter << endl;
}
}
|
cs |
10행 : less<int>()는 사용자가 정의한 게 아닌 functional에 있는 함수이다.
해당 함수를 사용할 때에는 항상 함수 객체로 만들어 사용해야 한다.
알고리즘의 종류는 정렬뿐만 아니라 count_if, for_each 등 여러 가지 존재한다.
'C++' 카테고리의 다른 글
C++ 콜백함수 (0) | 2020.12.27 |
---|---|
C++ STL(Map) (0) | 2020.10.06 |
C++ STL(반복자 iterator) (0) | 2020.09.28 |
C++ STL(Vector) (0) | 2020.09.28 |
C++ 템플릿(template) (0) | 2020.09.24 |