C++ 표준 라이브러리
From Wikipedia, the free encyclopedia
C++ 프로그래밍 언어에서, C++ 표준 라이브러리 (C++ Standard Library)는 C++과 C++ ISO 표준 자체로 쓰여진 클래스들과 함수들의 집합이다.[1] C++ 표준 라이브러리는 여러 제네릭 컨테이너들, 그리고 이러한 컨테이너들과 함수 객체, 제네릭 문자열, 스트림(인터렉티브와 파일 입출력을 포함하는), 몇몇 언어 특징 그리고 숫자의 제곱근을 찾는 것 같은 작업을 위한 모든 함수들을 활용하기 위한 함수들을 제공한다. C++ 표준 라이브러리는 또한 ".h"로 끝나는 ISO C90 C 표준 라이브러리의 18 헤더들을 포함하지만 이것들의 사용은 추천되지 않는다.[2] ".h"로 끝나지 않는 헤더는 C++ 표준 라이브러리에는 존재하지 않는다. C++ 표준 라이브러리의 특징은 std
이름공간 (namespace) 내에 선언된다는 것이다.
C++ 표준 라이브러리는 표준 템플릿 라이브러리(STL : Standard Template Library)에 의해 도입된 관습에 기반하며, 제네릭 프로그래밍과 STL의 개발자들의 연구에 영향을 받았다.[3][4] 비록 C++ 표준 라이브러리와 STL이 많은 특징들을 공유하지만, 둘 중 어느것도 다른 하나의 상위 집합은 아니다.
C++ 표준 라이브러리의 주목할 만한 특징은 이것이 단지 제네릭 알고리즘의 구문과 의미를 명시하는 것이 아니라 이것들의 성능의 요구에 가치를 두었다는 것이다.[5] 이러한 성능 요구 사항들은 종종 잘 알려진 알고리즘과 상응하는데, 이것은 기대되지만 사용되기 위해 요구되지는 않는다. 대부분의 경우에 이것은 선형 시간 O(n) 또는 선형 로그형 시간 O(n log n)를 요구하지만, 어떤 경우에는 안정 정렬을 위해 준선형 시간 O(n log2 n) 같은 높은 수준도 허용된다. 이전의 정렬은 실질적으로 빠른 퀵 정렬의 사용을 허락하며 단지 평균적으로 O(n log n)를 요구하였지만, 인트로 정렬이 빠른 평균 성능과 최악의 상황 복잡도 최적화 모두를 위해 도입되었으며, C++11에서는 정렬이 최악의 경우라도 선형 로그적으로 보장되었다. 다른 경우에 요구 사항들은 퀵 선택의 경웨 단지 평균적으로 선형 시간을 요구하는 선택 알고리즘 같이 느슨한 상태로 남아 있으며,[6] 인트로 선택의 경우 최악의 경우에도 선형임을 요구하지 않는다.
C++ 표준 라이브러리는 C++ ISO 표준화 노력의 일환으로 ISO 표준화를 지나왔으며, 확장된 기능의 표준화를 다루는 다른 작업을 진행하고 있다.[7]