: 5. 다음 배열을 만들고 물음에 답하시오.
:
: 배열 : 6 2 9 4 10 1 7 8 3 5
:
:
: 1) 정렬(sort)을 사용하여 큰 수부터 순서대로 출력하시오.
: ex) 10 9 8 7 6 5 4 3 2 1
:
: 2) 짝수와 홀수를 각각 정렬(sort)하여 큰 수부터 출력하시오.
: ex) 10 8 6 4 2 9 7 5 3 1
물론 STL을 써서,
for, while 등의 루프나 if 문조차도 전혀 쓰지 않고 작성하는 예제입니다.
//---------------------------------------------------------------------------
#include <iostream>
#pragma hdrstop
#include <algorithm>
#include <iterator>
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
int main(int argc, char* argv[])
{
int a[10] = {6, 2, 9, 4, 10, 1, 7, 8, 3, 5}, unstable[10], stable[10];
ostream_iterator<int> out(cout, " ");
copy(&a[0], &a[10], out);
cout.put('\n');
sort(&a[0], &a[10], greater<int>()); // 오름차순 정렬은 greater 함수 객체를 사용하세요.
copy(&a[0], &a[10], out);
cout.put('\n');
copy(&a[0], &a[10], &unstable[0]);
copy(&a[0], &a[10], &stable[0]);
stable_partition(&stable[0], &stable[10], // stable_partition은 순서를 유지함(stablity)
compose1(bind2nd(equal_to<int>(), 0),
bind2nd(modulus<int>(), 2)));
copy(&stable[0], &stable[10], out);
cout.put('\n');
return 0;
}
//---------------------------------------------------------------------------
출력 결과는 다음과 같습니다.
6 2 9 4 10 1 7 8 3 5
10 9 8 7 6 5 4 3 2 1
10 8 6 4 2 9 7 5 3 1
[참고]
compose1은 SGI STL 배포본인 STLport에 있는 비표준 함수 객체입니다.
C++Builder 6가 아닌 경우는
http://stlport.org 에서 받아서 별도로 설치하셔야 합니다.