C++ 표준 라이브러리 헤더는 지정되지 않은 방식으로 서로를 포함 할 수 있으므로 일반적으로 프로그래머는 다른 헤더를 포함하여 하나의 헤더에 의존하면 안됩니다. 그러나 어떤 경우에는 헤더가 다른 헤더를 포함하거나 다른 헤더를 포함해야하는 특정 기능을 사용할 수 있습니다. 그 사건들은 무엇입니까?C++ 표준 라이브러리의 어떤 헤더에 다른 헤더를 포함시킬 수 있습니까?
답변
이 답변은 C 헤더 (<meow.h>
및 <cmeow>
것)를 무시합니다. 은 C++ 라이브러리 헤더 (모든 참조는 N4659에 있습니다) :
<initializer_list>
<utility>
(§23.2.1 [utility.syn])<string>
(§24.3.1 [string.syn])<array>
(§26.3.2 [array.syn])<deque>
(§26.3.3 [deque.syn]) ,451,515,
<forward_list>
(§26.3.4 [forward_list.syn])<list>
(§26.3.5 [list.syn])<vector>
(§26.3.6 [vector.syn])<map>
(§26.4.2 [associative.map.syn])<set>
(§26.4 0.3 [associative.set.syn])<unordered_map>
(§26.5.2 [unord.map.syn])- ,210 (§26.5.3 [unord.set.syn])
<queue>
(§26.6.2 [queue.syn])<stack>
(§26.6.3 [stack.syn])<algorithm>
(§28.2 [algorithms.syn])<random>
(§29.6.2 [rand.synopsis])<valarray>
(§29.7.1 [valarray.syn])<regex>
(§31.4 [re.syn]) 01,235,164
<iostream>
는 <ios>
, <streambuf>
, <istream>
및 <ostream>
(§30.4.1 [iostream.syn])를 포함하도록 보장한다.
<ios>
에는 <iosfwd>
(§30.5.1 [ios.syn])이 포함됩니다.
<bitset>
은 <string>
및 <iosfwd>
(§23.9.1 [bitset.syn])을 포함하도록 보장됩니다.
프리 기능은 명목상 <iterator>
에 존재하지만, 어느 경우도 가능 std::begin
, std::end
은 C++ 14 c-
, r-
및 cr-
버전 및 C++ 17 무료 기능 템플릿 std::size
, std::empty
및 std::data
템플리트 다음의 헤더가 포함되어 <array>
, <deque>
, <forward_list>
, <list>
, <map>
, <regex>
, <set>
, <string>
, <unordered_map>
, <unordered_set>
및 <vector>
(§27.7 [iterator.range], §27.8 [iterator.container]). <string_view>
포함되면
는 *begin
*end
및 함수 및 [utility.swap] (swap(T&, T&)
및 swap(T (&a)[N], T (&b)[N])
)에 정의 된 일반적인 두 std::swap
과부하가 가능하도록 보장된다. 그러나 size/empty/data
은 그렇지 않습니다. (§24.4.1 [string.view.synop]).
@ShafikYaghmour N3337과 N4140을 비교 한 후에 만 차이점은 C++ 11에서'std :: cbegin' 등이 없다는 것입니다. 이것의 대부분은 각 머리말에 대한 개요에 있습니다. –
- 1. C++ 표준 라이브러리 헤더에 C 표준 헤더가 포함될 수 있습니까?
- 2. C 표준 라이브러리의 VAPI는 어디에 있습니까?
- 3. 혼합 C/C++ 헤더에 다른 혼합 헤더가 포함될 수 있습니까?
- 4. 정적 라이브러리의 문자열을 링크하는 실행 파일에 포함시킬 수 있습니까?
- 5. C++ 표준 라이브러리의 sizeof()
- 6. c 표준 헤더에 해당하는 코드는 어디에 있습니까?
- 7. 표준 C++ 라이브러리의 대안은 무엇이며 명확한 구현으로 향상시킬 수 있습니까?
- 8. C 표준 라이브러리의 내부 작업
- 9. HTML5에 어떤 언어를 포함시킬 수 있습니까?
- 10. 모든 C 표준 라이브러리의 소스 코드는 어디에서 찾을 수 있습니까?
- 11. OS X : 표준 C 라이브러리의 소스 코드를 볼 수 있습니까?
- 12. C 표준 라이브러리와 C POSIX 라이브러리의 차이점
- 13. C# 프로젝트에 C 코드를 포함시킬 수 있습니까?
- 14. C++ 표준 라이브러리의 헤더 위치는 어디입니까
- 15. C 표준 라이브러리의 전달 엔티티를 선언 하시겠습니까?
- 16. 왜 표준 C++ 라이브러리의 일부 식별자가 짧습니까?
- 17. C++ 표준 라이브러리의 boost :: optional 대안
- 18. 헤더에 노출되지 않은 정적 라이브러리의 함수에 액세스 할 수 있습니까?
- 19. C++ 응용 프로그램 또는 다른 방법으로 PHP를 포함시킬 수 있습니까?
- 20. Visual C++ - 내 정적 라이브러리의 헤더를 찾을 수 없습니다.
- 21. 스칼라 표준 라이브러리의 액터입니까?
- 22. 변수 이름에 다른 변수를 포함시킬 수 있습니까?
- 23. 모듈을 다른 모듈에 포함시킬 수 있습니까?
- 24. 외부 Objective-C 라이브러리의 헤더를 Swift 구문으로 사용할 수 있도록합니다.
- 25. C++에서 (서로) 루프에 포함시킬 수 있습니까?
- 26. 표준 라이브러리의 헤더가 Linux에 어떻게 설치되어 있습니까?
- 27. 표준 C 라이브러리의 bsearch() 함수는 어떻게 구현됩니까?
- 28. SRS : 포함시킬 수 있습니까?
- 29. 부스트 라이브러리의 헤더를 포함 할 수 없습니다.
- 30. ocaml에서 표준 라이브러리의 소스 코드는 어디에 있습니까?
이 정보가 유용한 이유는 무엇입니까? 그것은 @Pradhan – Pradhan
당신이 포함 된 경우'은'당신'', 또는''당신은 그냥 필요하면'표준 : begin' /'표준을 포함 할 필요가 없습니다, 예를 들어, 알고 유용 :: 끝 '. –
아, 말이 되네. 감사! – Pradhan