IT/C++
C++ 버전별 비교
나떼~
2024. 8. 4. 17:13
728x90
C++98
주요 특징
- 표준 템플릿 라이브러리(STL): C++98은 벡터, 리스트, 맵 등의 데이터 구조와 알고리즘을 제공하는 표준 템플릿 라이브러리를 도입했습니다.
- 예외 처리: try, catch, throw 키워드를 사용하여 예외 처리를 도입했습니다.
- 네임스페이스: 네임스페이스를 도입하여 코드의 모듈화를 도왔습니다.
- bool 타입: bool 타입을 추가하여 논리 값을 표현할 수 있게 했습니다.
C++03
주요 특징
- 버그 수정 및 개선: C++98 표준의 버그를 수정하고 일부 기능을 개선했습니다.
- 라이브러리 개선: 표준 라이브러리의 안정성과 성능을 향상시켰습니다.
- 핵심 언어 변경 없음: C++03은 주로 버그 수정과 소규모 개선에 중점을 두었기 때문에 핵심 언어 자체에 큰 변화는 없었습니다.
C++11
주요 특징
- 자동 타입 추론(auto): 컴파일러가 변수의 타입을 자동으로 추론할 수 있게 했습니다.
- 범위 기반 for 루프: 배열이나 컨테이너를 쉽게 순회할 수 있는 범위 기반 for 루프를 도입했습니다.
- 람다 함수: 람다 함수를 도입하여 함수 객체를 더 쉽게 생성할 수 있게 했습니다.
- 스마트 포인터: 메모리 관리를 위해 unique_ptr, shared_ptr 등의 스마트 포인터를 도입했습니다.
- nullptr: NULL 포인터의 대안으로 nullptr 키워드를 도입했습니다.
- 정규 표현식: <regex> 라이브러리를 통해 정규 표현식을 지원했습니다.
C++14
주요 특징
- 리터럴 타입: constexpr 함수의 제한이 완화되어 더 많은 리터럴 타입을 허용했습니다.
- 일반화된 람다 캡처: 람다 함수의 캡처 방식이 개선되었습니다.
- std::make_unique: unique_ptr을 생성하기 위한 std::make_unique 함수를 도입했습니다.
- 바이너리 리터럴: 0b 접두사를 사용하여 이진수를 직접 표기할 수 있게 했습니다.
C++17
주요 특징
- 구조화된 바인딩: 구조체나 튜플의 요소를 직접 변수로 바인딩할 수 있게 했습니다.
- if 초기화문: if 문 안에서 변수를 초기화할 수 있게 했습니다.
- 파일 시스템 라이브러리: <filesystem> 라이브러리를 통해 파일 및 디렉터리 작업을 지원했습니다.
- std::optional: 값이 없을 수도 있는 변수를 표현하기 위해 std::optional 타입을 도입했습니다.
- 폴드 표현식: 가변 인자 템플릿을 간단하게 표현할 수 있는 폴드 표현식을 도입했습니다.
C++20
주요 특징
- 콘셉트: 템플릿의 타입 요구사항을 명시적으로 지정할 수 있는 콘셉트를 도입했습니다.
- 코루틴: 비동기 프로그래밍을 위한 코루틴을 도입했습니다.
- 모듈: 헤더 파일의 문제를 해결하기 위한 모듈 시스템을 도입했습니다.
- 범위 라이브러리: <ranges> 라이브러리를 통해 컨테이너와 알고리즘을 더욱 유연하게 사용할 수 있게 했습니다.
- 스팬: 배열과 유사한 컨테이너를 위한 뷰 타입인 std::span을 도입했습니다.
728x90
반응형