<div>제가 알고 있는 c의 sort, std:: sort 함수에 대해서 함수포인터, 함수자(functor), 그리고 람다표현으로 그냥 예제 함 만들어 보았습니다.</div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div> <div><br></div> <div>#include <algorithm></div> <div>#include <functional></div> <div>using namespace std;</div> <div><br></div> <div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <string.h></div> <div><br></div> <div>int compareC (const char* c1, const char* c2){ return (*c1 < *c2)? 1: (*c1 > *c2) ? -1 : 0; }</div> <div>int compareS (const char& c1, const char& c2) { return (c1 < c2); }</div> <div><br></div> <div>template<class T></div> <div>struct compareF { int operator()(const T& c1, const T& c2) { return (c1 > c2); } };</div> <div><br></div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char<span class="Apple-tab-span" style="white-space:pre;"> </span>msg[] = "Hello world";</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("\nC-sorting: Qsort-------------------------------------------------------\n");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>qsort(&msg[0], strlen(msg), sizeof(char), (int (*)(const void *, const void *))compareC);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", msg);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char<span class="Apple-tab-span" style="white-space:pre;"> </span>msg[] = "welcome to todayhumor";</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("\nstd-sorting with function ---------------------------------------------\n");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* bgn = &msg[0];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* end = &msg[strlen(msg)];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>std::sort(bgn, end, compareS);</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", msg);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char<span class="Apple-tab-span" style="white-space:pre;"> </span>msg[] = "c++ functor is difficult but very cool.";</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("\nstd-sorting with functor ---------------------------------------------\n");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* bgn = &msg[0];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* end = &msg[strlen(msg)];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>std::sort(bgn, end, compareF<int>());</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", msg);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char<span class="Apple-tab-span" style="white-space:pre;"> </span>msg[] = "c++ goes to complete the abstraction of language as having a lambda expression.";</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("\nstd-sorting with lambda ---------------------------------------------\n");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* bgn = &msg[0];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char* end = &msg[strlen(msg)];</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>std::sort(bgn, end, [](const char& c1, const char& c2)->int{ return (c1 < c2); });</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%s\n", msg);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div> <div><br></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.