C++ 오름 차순에서 greater() 에서 마지막 괄호가 붙는 원리가 궁금해요 ^^
부탁드립니다
생성자 호출입니다.
음 저도 c++을 공부를 하는 중이라 정확한 설명은 어렵지만 제생각엔 greater란 class를 불러 오는거 같네요. class는 불러올때 ()가 필요하자나요. 먼저 달린 댓글처럼 생성자 호출을 위해서겠죠.
template struct greater { bool operator() (const T& x, const T& y) const {return x>y;} typedef T first_argument_type; typedef T second_argument_type; typedef bool result_type; };
std c++11 greater struct 원본입니다.
좀더 생각해보면 sort 시에 방식으로 greater를 넣게되는데 sort라는 함수가 내부적으로 greater에 operator를 호출하게 될거같네요. 그렇다면 아마 greater 말고도 다른 정렬방식들도 operator 라는 멤버를 가지고 있겠죠.
아무튼 결론은 greater라는것도 class 이기때문에 호출시 ()가 필요하다 인닙다. (주관적인 결론)
function object의 임시 객체를 생성하는 것입니다.
sort의 경우 다음과 같이 사용합니다.
int arr[5] = {2, 4, 1, 3, 5}; std::greater<int> comp; std::sort(arr, arr+5, comp);
이 때 comp를 sort시에만 임시로 사용한다면 다음과 같이 임시 객체를 생성하여 인자로 넘겨줄 수 있습니다.
std::sort(arr, arr+5, std::greater<int>());
C++ 에서 Template 문법을 학습하세요. 그후에 STL (Standard Template Library)를 보시면 됩니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
생성자 호출입니다.
생성자 호출입니다.
음 저도 c++을 공부를 하는 중이라 정확한 설명은
음 저도 c++을 공부를 하는 중이라 정확한 설명은 어렵지만
제생각엔 greater란 class를 불러 오는거 같네요. class는 불러올때 ()가 필요하자나요.
먼저 달린 댓글처럼 생성자 호출을 위해서겠죠.
template struct greater {
bool operator() (const T& x, const T& y) const {return x>y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef bool result_type;
};
std c++11 greater struct 원본입니다.
좀더 생각해보면 sort 시에 방식으로 greater를 넣게되는데 sort라는 함수가 내부적으로 greater에 operator를 호출하게 될거같네요.
그렇다면 아마 greater 말고도 다른 정렬방식들도 operator 라는 멤버를 가지고 있겠죠.
아무튼 결론은 greater라는것도 class 이기때문에 호출시 ()가 필요하다 인닙다. (주관적인 결론)
function object의 임시 객체를 생성하는
function object의 임시 객체를 생성하는 것입니다.
sort의 경우 다음과 같이 사용합니다.
이 때 comp를 sort시에만 임시로 사용한다면 다음과 같이 임시 객체를 생성하여 인자로 넘겨줄 수 있습니다.
C++ 에서 Template 문법을 학습하세요.
C++ 에서 Template 문법을 학습하세요. 그후에 STL (Standard Template Library)를 보시면 됩니다.
댓글 달기