提问人:T.C. 提问时间:10/29/2014 最后编辑:rsjaffeT.C. 更新时间:1/31/2021 访问量:2326
C++ 标准库中的哪些标头保证包含另一个标头?
Which headers in the C++ standard library are guaranteed to include another header?
问:
C++ 标准库标头可能以未指定的方式相互包含,因此程序员通常不应依赖一个标头包括另一个标头。但是,在少数情况下,可以保证一个标头包含另一个标头,或者提供某些功能,否则这些函数将需要包含另一个标头。这些情况是什么?
答:
此答案忽略 C 标头 - 和 ones。在 C++ 库标头中(所有引用均指向 N4659):<meow.h>
<cmeow>
<initializer_list>
保证包括:
<utility>
(§23.2.1 [实用程序.syn])<string>
(§24.3.1 [string.syn])<array>
(§26.3.2 [数组.syn])<deque>
(§26.3.3 [deque.syn])<forward_list>
(§26.3.4 [forward_list.syn])<list>
(§26.3.5 [列表.syn])<vector>
(§26.3.6 [vector.syn])<map>
(§26.4.2 [associative.map.syn])<set>
(§26.4.3 [associative.set.syn])<unordered_map>
(§26.5.2 [unord.map.syn])<unordered_set>
(§26.5.3 [unord.set.syn])<queue>
(§26.6.2 [队列.syn])<stack>
(§26.6.3 [stack.syn])<algorithm>
(§28.2 [algorithms.syn])<random>
(§29.6.2 [兰德概要])<valarray>
(§29.7.1 [valarray.syn])<regex>
(§31.4 [re.syn])
<iostream>
保证包括 、 、 和 (§30.4.1 [iostream.syn])。<ios>
<streambuf>
<istream>
<ostream>
<ios>
保证包括 (§30.5.1 [ios.syn])。<iosfwd>
<bitset>
保证包括 和 (§23.9.1 [bitset.syn])。<string>
<iosfwd>
自由函数模板 、 、 C++ 、 和 版本以及 C++17 自由函数模板 和 名义上位于 中,但如果包含以下任何标头,也可以使用:、 、 、 、 、 和 (§27.7 [迭代器范围], §27.8 [迭代器.容器])。std::begin
std::end
c-
r-
cr-
std::size
std::empty
std::data
<iterator>
<array>
<deque>
<forward_list>
<list>
<map>
<regex>
<set>
<string>
<unordered_map>
<unordered_set>
<vector>
如果包含,则保证 and 函数和 [utility.swap] ( 和 ) 中定义的两个泛型重载可用。但是,不是(§24.4.1 [string.view.synop])。<string_view>
*begin
*end
std::swap
swap(T&, T&)
swap(T (&a)[N], T (&b)[N])
size/empty/data
评论
std::cbegin
以下是C++20的强制性包含,取自N4860。
比较包含在以下内容中:
- 数组
- 计时码表
- 协程
- 德克
- 文件系统
- forward_list
- 迭 代
- 列表
- 地图
- 记忆
- 自选
- 队列
- 范围
- 正则表达式
- 设置
- 叠
- 字符串
- string_view
- system_error
- 线
- 元
- 类型索引
- unordered_map
- unordered_set
- 效用
- 变体
- 向量
initializer_list包含在以下内容中:
- 算法
- 数组
- 德克
- forward_list
- 列表
- 地图
- 队列
- 随机
- 范围
- 正则表达式
- 设置
- 叠
- 字符串
- 线
- unordered_map
- unordered_set
- 效用
- 瓦拉阵列
- 向量
字符串包含在以下内容中:
- 位集
IOSFWD包含在以下内容中:
- 位集
- iOS系统
概念包含在以下内容中:
- 迭 代
迭代器包含在以下内容中:
- 范围
iOS、Streambuf、ISTREAM 包含在:
- IO流
ostream 包含在以下内容中:
- IO流
- 同步流
Cinttypes 包含在以下内容中:
- cst丁
评论
<vector>
<initializer_list>
<iterator>
std::begin
std::end
initializer_list