5. Algorithms

STL 알고리즘에 대해 알아보자.

30. Make sure destination range are big enough.

STL 알고리즘에서 쓰기 범위가 읽기 범위보다 작을 경우 그 동작은 정의되어 있지 않다. 반드시 쓰기 범위가 읽기 범위 크기 이상임을 보장하라.

31. Know your sorting options.

일반적인 정렬은 sort나 stable_sort, 부분 정렬은 partial_sort, 앞에서 n개만 얻고 싶으면 nth_element, list를 정렬하면 partition, stable_partition, list::sort 등을 쓸 수 있다.

32. Follow remove-like algorithm by erase if you really want to remove something.

remove는 그것만으론 지우는 효과가 없다. remove가 반환한 반복자 뒤의 구간을 erase 해야 한다.

33. Be wary of remove-like algorithm on containers of pointers.

동적 할당한 포인터를 담은 컨테이너를 remove하기 전에는 지울 포인터들을 먼저 해제해줘야 한다. 아니면 unique_ptr나 shared_ptr을 쓰자.

34. Note which algorithms expect sorted ranges.

binary_search, upper_bound, lower_bound, equal_range, set_union, set_intersection, set_difference, set_symmetric_difference, merge, inplace_merge, includes, unique, unique_copy는 정렬된 범위를 받아야 제대로 동작한다.

35. Implement simple case-insensitive string comparisons via mismatch or lexicographical_compare.

문자열의 대소문자 구별 없는 비교는 mismatch나 lexicographical_compare로 할 수 있다.

36. Understand the proper implementation of copy_if.

copy_if는 C++11부터 생겼다.

37. Use accumulate or for_each to summarize ranges.

범위를 누적하려면 accumulate, 범위 전체에 함수를 적용하려면 for_each를 쓴다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중