모던 C++ STL(C++11, C++14, C++17, C++20)

#2. [모던 C++ STL] 타입

2 분 소요

(C++11~) nullptr_t가 추가되었습니다. (C++11~) lldiv_t, lldiv_t, imaxdiv_t, float_t, double_t가 추가되었습니다. (C++11~) LLONG_MIN, LLONG_MAX가 추가되었습니다. (C...

#3. [모던 C++ STL] 동적 메모리 관리

5 분 소요

(C++11~) get_new_handler()가 추가되었습니다. (C++11~) pointer_traits가 추가되어 포인터와 유사한 타입들을 다루는 표준화된 방법을 제공합니다. (C++11~) aligned_alloc()이 추가되어 정렬된 메모리를 ...

#4. [모던 C++ STL] 유틸리티

6 분 소요

(C++11~) tuple이 추가되어 다수의 요소를 관리할 수 있는 데이터 전달용 개체를 좀 더 간편하게 만들 수 있습니다. (C++11~) move()가 추가되어 좌측값을 우측값으로 형변환할 수 있습니다. (C++11~) move_if_noexcept...

#5. [모던 C++ STL] 컨테이너

8 분 소요

[MEC++#13] iterator 보다 const_iterator를 선호하라.(const_iterator 지원 참고) [MEC++#42] 기존 push_back()등의 삽입 대신 emplace_back()등의 삽입을 고려하라.(emplace(), emplac...

#6. [모던 C++ STL] 이터레이터

2 분 소요

(C++11~) move_iterator 어뎁터가 추가되어 이터레이터가 가리키는 요소를 이동 연산 할 수 있습니다. (C++11~) make_move_iterator가 추가되었습니다. (C++11~) next()와 prev()가 추가되었습니다. ...

#7. [모던 C++ STL] 알고리즘

5 분 소요

(C++11~) all_of(), any_of(), none_of(), find_if_not()이 추가되었습니다. (C++11~) minmax(), minmax_element()가 추가되었습니다. (C++11~) is_heap(), is_heap_unt...

#8. [모던 C++ STL] 함수자

3 분 소요

(C++11~) 기존에 제공되던 함수자 타입 특성 클래스(unary_function, binary_function등), 바인더(bind1st(), bind2nd()등), 어뎁터와 부정자(mem_fun(), mem_fun_ref(), ptr_fun(), not1(), ...

#9. [모던 C++ STL] 문자열

8 분 소요

(C++11~) u16string이 추가되어 UTF-16 인코딩 문자열을 지원합니다. (C++11~) u32string이 추가되어 UTF-32 인코딩 문자열을 지원합니다. (C++11~) isblank()가 추가되었습니다. (C++11~) ato...

#10. [모던 C++ STL] 숫자

7 분 소요

(C++11~) complex에 proj()이 추가되었습니다. (C++11~) 공통 수학 함수가 보강되었습니다. (C++11~) 부동 소수점 환경이 추가되었습니다. (C++11~) 난수 생성기가 추가되어 다양한 형태의 난수를 만들 수 있습니다. ...

#11. [모던 C++ STL] 입출력

6 분 소요

(C++11~) vscanf(), snprintf(), vsnprintf()가 추가되었습니다. (C++11~) hexfloat(), defaultfloat(), get_money(), put_money(), get_time(), put_time()이 추가되었습...

#12. [모던 C++ STL] 현지화

최대 1 분 소요

(C++11~) isblank()가 추가되었습니다. (C++11~C++17) 문자열 현지화 변환(wstring_convert, wbuffer_convert, codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16, codecvt_...

#13. [모던 C++ STL] 진단

2 분 소요

(C++11~) 동적 예외 사양이 deprecate 되면서 unexpected()도 함께 deprecate 되었습니다. (C++11~) future_error, regex_error, system_error, ios_base::failure, bad_weak_...

#14. [모던 C++ STL] type_traits(C++11)

6 분 소요

(C++11~) type_traits가 추가되어 컴파일 타임 프로그래밍시 각 타입의 조건들을 검사하거나 타입 변환을 할 수 있습니다. (C++14~) is_null_pointer, is_final이 추가되었습니다. (C++17~) bool_constan...

#15. [모던 C++ STL] ratio(C++11)

1 분 소요

(C++11~) ratio가 추가되어 소수점 오차없이 유리 분수를 표현할 수 있습니다. 분자와 분모를 따로 저장하여 유리 분수를 표현하며, 유틸리티들을 이용하여 컴파일 타임 유리수(정수와 분수) 연산을 지원합니다.

#16. [모던 C++ STL] unique_ptr, make_unique(C++11, C++14)

7 분 소요

[MEC++#18] 소유권 독점 자원의 관리에는 unique_ptr를 사용하라.(unique_ptr 참고) [MEC++#22] PImpl 관용구를 사용할때에는 암시적으로 정의되는 특수 멤버 함수들을 구현 파일에서 정의하라.(unique_ptr을 이용한 PImp...

#19. [모던 C++ STL] tuple(C++11)

5 분 소요

(C++11~) tuple이 추가되어 다수의 요소를 관리할 수 있는 데이터 전달용 개체를 좀 더 간편하게 만들 수 있습니다. (C++11~) make_tuple(), tie(), forward_as_tuple()이 추가되어 tuple을 쉽게 생성할 수 있습니다...

#21. [모던 C++ STL] hash(C++11)

최대 1 분 소요

(C++11~) hash()가 추가되어 각 타입별로 데이터의 해시값(Digest)을 구할 수 있습니다.

#22. [모던 C++ STL] array(C++11)

3 분 소요

(C++11~) array가 추가되어 기존 C스타일의 배열처럼 연속된 메모리를 사용하는 컨테이너를 제공합니다. C스타일 배열처럼 컴파일 타임에 크기가 결정되어 스택에 할당되므로, 힙에 할당되는 vector 보다 성능이 좋습니다. (C++20) to_array(...

#23. [모던 C++ STL] forward_list(C++11)

2 분 소요

(C++11~) forward_list가 추가되어 단방향 리스트를 제공합니다. 기존 양방향 리스트인 list보다 요소 관리 공간을 작게 차지하며, push_front()로 요소의 앞쪽 방향으로 리스트를 구성합니다.

#26. [모던 C++ STL] condition_variable(C++11)

3 분 소요

(C++11~) condition_variable이 추가되어 쓰레드간 동기화를 위해 쓰레드를 wait()시킨뒤, 특정 조건이 되었을때 활성화 시킬 수 있습니다.

#29. [모던 C++ STL] regex_match, regex_search, regex_replace(C++11)

3 분 소요

(C++11~) regex_match()가 추가되어 문자열의 전체가 정규 표현식과 일치하는지 검사할 수 있습니다. (C++11~) regex_search()가 추가되어 문자열의 일부가 정규 표현식과 일치하는지 검사할 수 있습니다. (C++11~) reg...

#31. [모던 C++ STL] exchange(C++14)

1 분 소요

(C++14~) exchange()가 추가되어 주어진 값을 바꾸는 작업이 간편해 졌습니다. 특히 이동 생성자와 이동 대입 연산자 구현에 활용할 수 있습니다.

#32. [모던 C++ STL] 표준 사용자 정의 리터럴(C++14)

최대 1 분 소요

(C++14~) 표준 사용자 정의 리터럴이 추가되어 operator ""s, operator ""min, operator ""if, 등 문자열, 날짜 / 시간, 복소수 관련 표현이 간편해 졌습니다. (C++17~) operator ““sv가 추가되어 strin...

#33. [모던 C++ STL] optional(C++17)

2 분 소요

(C++17~) optional이 추가되어 값이 있을 수도 있고, 없을 수도 있는 데이터를 처리할 수 있어, 미확정 상태, 값을 처리하기 부적절한 상태, 함수 리턴값 성공 여부 처리를 좀더 단순하게 할 수 있습니다.

#34. [모던 C++ STL] any(C++17)

1 분 소요

(C++17~) any가 추가되어 타입의 변동 가능성이 있는 데이터를 비교적 안전하게 사용할 수 있습니다.

#35. [모던 C++ STL] variant(C++17)

3 분 소요

(C++17~) variant가 추가되어 타입이 다른 여러 데이터들을 동일한 메모리 공간에서 쉽게 관리할 수 있습니다.

#36. [모던 C++ STL] string_view(C++17)

2 분 소요

(C++17~) string_view가 추가되어 문자열을 읽기 전용으로 사용할 때 불필요한 문자열 복제가 없도록 해줍니다. (C++20~) u8string_view가 추가되었습니다.

#39. [모던 C++ STL] 파일 시스템(C++17)

2 분 소요

(C++17~) path, absolute(), relative()등이 추가되어 경로 문자열을 생성할 수 있습니다. (C++17~) current_path(), directory_iterator(), recursive_directory_iterator()등이 ...

#40. [모던 C++ STL] concepts(C++20)

3 분 소요

(C++20~) same_as, derived_from, convertible_to, integral, floating_point, assignable_from, swappable, destructible, constructible_from, default_initi...

#41. [모던 C++ STL] coroutine(C++20)

3 분 소요

(C++20~) coroutine_handle 이 추가되어 코루틴을 재개하는 코루틴 핸들을 제공합니다. (C++20~) suspend_always, suspend_never가 추가되어 코루틴에서 사용하는 대기 가능 개체를 제공합니다. (C++20~) c...

#42. [모던 C++ STL] 범위(Range)와 뷰(View)(C++20)

13 분 소요

(C++20~) 범위(Range)가 추가되어 이터레이팅할 수 있는 추상적인 요소들을 처리할 수 있습니다. (C++20~) 포인트 개체인 ranges::begin, ranges::end등이 추가되어 범위(Range)의 이터레이터를 구할 수 있습니다. (C...

#43. [모던 C++ STL] span(C++20)

3 분 소요

(C++20~) span이 추가되어 C스타일 배열, array, vector, 메모리, string 등 연속된 메모리 시퀀스를 참조할 수 있습니다.

#44. [모던 C++ STL] 포맷팅(C++20)

9 분 소요

(C++20~) format(), format_to(), format_to_n()이 추가되어 %d, %s 처럼 간편하고, << 처럼 확장성 있는 서식화 방법을 지원합니다. (C++20~) 표준 서식 지정자가 추가되어 채움, 정렬, 부호, 너비, 정밀...