Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++17의 주요 새 기능 총정리

C++17은 표준 C++ 언어의 최신 버전으로, 이전 버전인 C++11과 C++14를 계승하면서 핵심 언어에 다양한 기능을 추가하고 일부 오래된 기능은 제거한 버전입니다. C++17은 '기능이 완전한(feature complete)' 버전으로 불릴 만큼 폭넓은 개선 사항을 담고 있습니다.

이번 글에서는 C++17에서 새롭게 도입된 주요 변경 사항을 살펴보겠습니다.

라이브러리 변경 사항 – 유틸리티(Utils)

C++17의 가장 주목할 만한 변화 중 하나는 기존에 각각 따로 존재하던 라이브러리들의 기능과 패턴을 표준으로 통합한 것입니다. 수많은 서브 라이브러리가 하나의 표준으로 병합되어 개발 편의성이 크게 향상되었습니다.

C++17에서 유틸리티 라이브러리에 추가된 주요 기능은 다음과 같습니다.

  • std::variant
  • std::search
  • std::string_view
  • std::optional
  • std::any

라이브러리 변경 사항 – 파일시스템(Filesystem)

기존 표준 라이브러리는 파일 및 디렉터리 처리와 관련된 핵심 기능이 부족했습니다. C++ 표준화 위원회는 이를 보완하여 파일시스템 관련 기능을 공식 표준으로 편입했습니다.

C++17의 파일시스템 라이브러리에서 제공되는 주요 기능은 다음과 같습니다.

  • path 객체를 활용한 경로 처리
  • 컴파일러 및 라이브러리 지원
  • 경로 순회(Traversing)

라이브러리 변경 사항 – 병렬 알고리즘(Parallel Algorithm)

C++11과 C++14의 기존 알고리즘 기능을 확장하여, 표준 라이브러리 차원에서 자동 병렬화(auto parallelization)와 자동 벡터화(auto vectorization)를 지원하기 시작했습니다. 이를 통해 멀티코어 환경에서 성능 최적화가 한층 쉬워졌습니다.

C++17의 병렬 알고리즘에 추가된 주요 내용은 다음과 같습니다.

  • 기존 알고리즘 업데이트
  • 실행 정책(Execution Policies)
  • 새로운 알고리즘 추가

속성(Attributes)

C++17에는 컴파일러에게 의도를 명확히 전달할 수 있는 세 가지 새로운 속성이 추가되었습니다. 바로 [[maybe_unused]], [[fallthrough]], [[nodiscard]]입니다. 이를 통해 불필요한 경고를 줄이고 코드의 안정성을 높일 수 있습니다.

코드 간소화(Simplification)

C++17은 코드를 더 간결하고 읽기 쉽게 작성할 수 있도록 다음과 같은 기능들을 도입했습니다.

  • if / switch문의 초기화 문(Init Statement)
  • 인라인 변수(Inline Variables)
  • 구조적 바인딩 선언(Structured Binding Declarations)

검색자(Searchers)

C++17은 이전 버전의 문자열 검색 기능을 대폭 개선했습니다. boyer_moore_horspool_searcher, default_searcher, boyer_moore_searcher가 C++17에 새롭게 추가된 검색자이며, 특히 Boyer-Moore 계열 알고리즘은 대용량 텍스트 검색에서 뛰어난 성능을 발휘합니다.