#알고리즘
-> 알고리즘을 사용하여 오름차순, 내림차순 등을 할 수 있다.
알고리즘을 사용하려면 #include <algorithm>을 추가해야한다.
1. 정렬 sort
sort(시작위치, 마지막원소 다음 위치, 조건자)
=> sort(vecInt.begin(), vecInt.end(), Less<int>);
이와 같이 알고리즘을 사용할 때 조건자를 사용하게 되는데 조건자는 다음과 같이 만든다.
#조건자
-> bool 타입의 값을 반환하는 함수 포인터, 함수 객체로 만든 것이다.
전역에 조건을 설정해주면 된다.
template <typename T>
bool Less(T& _a, T& _b)
{
return _a < _b;
}
2. 조건에 맞는 개수 세기 count_if
count_if(시작위치, 마지막원소 다음 위치, 조건자)
=> count_if(vecInt.begin(), vecInt.end(), OddCnt<int>);
조건자가 true일때의 개수를 반환함
# 조건자
template <typename T>
bool OddCnt(T& _Num)
{
return (_Num % 2) != 0;
}
3. 모든 배열에 조건자 수행하기 for_each
for_each(시작위치, 마지막원소 다음 위치, 조건자)
vecInt가 포인터 형(vector<int*> vecInt;)일때, vecInt를 초기화 해주려면
ex)
for(int i=0; i<10; ++i)
{
delete vecInt[i];
vecInt[i] = nullptr;
}
을 해주어야 하는데 불편하다 따라서 다음과 같이 초기화 해주면 편하다.
=> for_each(vecInt.begin(), vecInt.end(), Delete<int*>)
조건
template <typename T>
void Delete(T& _In)
{
if (_In)
{
delete _In;
_In= nullptr;
}
}
'개발 Study' 카테고리의 다른 글
#40. Map (0) | 2021.05.26 |
---|---|
#39. List (0) | 2021.05.24 |
#37. Vector (0) | 2021.05.23 |
#36. STL (Standard Template Library) 정의 (0) | 2021.05.22 |
#35. 클래스 템플릿 (0) | 2021.05.21 |