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])<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])<unordered_set>
(§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])
<iostream>
是保證包括<ios>
,<streambuf>
,<istream>
,和<ostream>
(§30.4.1[iostream.syn])。
<ios>
保證包括<iosfwd>
(§30.5.1[ios.syn])。保證包括<string>
和<iosfwd>
(§23.9.1[bitset.syn])。
自由函數模板std::begin
,std::end
,在C++ 14 c-
,r-
和cr-
版本,以及C++ 17免費函數模板std::size
,std::empty
和std::data
名義上居住在<iterator>
,但也可如果有的話下面標頭包括:<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'等。大部分內容在相應標題的簡介中。 – 2014-10-28 18:16:28
- 1. 在C++中將新的頭文件包含到標準庫中
- 2. 包含C++標準庫
- 3. 包含標頭的UDP包
- 4. 爲什麼包含標準頭文件?
- 5. 包含C頭文件包含標準包含(不包括C++ 11)
- 6. 在C++中包含非標準C頭文件
- 7. 包含div的gridview標頭
- 8. 頭文件和標準庫
- 9. 標準庫頭層次
- 10. 包含XML的POST需要哪些請求標頭?
- 11. 預編譯標準庫頭文件 - C++
- 12. C++標準頭文件
- 13. 標頭包含問題
- 14. C/C++標準中的頭文件?
- 15. 我是否需要一個外部「C」塊來包含標準C頭文件?
- 16. 包含5個部分的標頭
- 17. Python的setuptools的不包括C++標準庫頭
- 18. C++標準庫的標題在哪裏
- 19. C#編程標準應包含哪些內容?
- 20. 提取一些標頭POST
- 21. 哪個Windows SDK包含用於IE的標頭IDOMCustomEvent
- 22. 我可以依靠標準報頭中的包含守衛
- 23. 如何在ListView標頭中包含ViewPager
- 24. 我應該爲DXTrace包含哪個標頭?
- 25. C++編碼標準的#define頭文件
- 26. 當包含不同的頭文件時,C實現是否可以隱式地包含標準頭文件?
- 27. 哪些請求應該有P3P標頭?
- 28. 獲取包含標頭的json鏈接
- 29. 包含Django FileUpload的Content-disposition標頭
- 30. JavaScript包含不同的標頭
此信息爲何有用? – Pradhan 2014-10-28 21:48:46
@Pradhan例如,如果你只需要'std :: begin' /'std ::如果你包含'',你不必包含''或'' end'。 –
2014-10-28 22:23:39
啊,有道理。謝謝! – Pradhan 2014-10-28 22:24:29