더북(TheBook)

공백이 들어 있는 속담을 여러 개 입력해야 하므로 여기서는 getline() 함수를 사용했다. 속담은 한 줄에 하나씩 입력받고, proverbs 컨테이너의 push_front()를 호출해서 새 리스트 원소로 추가한다. 속담을 추가 요청하는 부분은 emplace_back() 멤버를 사용해보기 위한 것이다. 출력 부분은 main() 함수 정의 앞에 있는 list_elements() 함수 템플릿으로 생성한 것이다. list_elements() 템플릿은 출력 반복자를 지원하는 컨테이너의 스트림이 삽입 연산자를 지원한다면 어떤 타입이라도 원소로 출력할 수 있다. 코드에서는 list_elements() 함수 템플릿에 순방향 반복자와 역방향 반복자를 사용했다.

proverbs에서 첫 번째 sort() 멤버 호출은 인수를 사용하지 않았으므로 원소들은 오름차순으로 정렬된다. 두 번째 sort() 호출은 greater 조건자를 인수로 전달한다. greater 조건자는 functional 헤더에 정의되어 있고, 이 책에서 종종 만나게 될 다른 표준 조건자도 정의되어 있다. greater<>() 표현식은 operator>()를 사용해서 객체를 비교하는 함수 객체를 정의한 것이고, 템플릿 타입 인수를 추론한다. 이 표현식을 사용하면 리스트 원소들이 내림차순으로 정렬된다. sort()와 유용하게 사용할 수 있는 조건자로는 greater_equal<>(), less<>_equal<>()이 있다. 이름에서 어떤 비교를 하는지 알 수 있을 것이다. 예제 출력을 보면 모든 것이 예상대로 동작했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.