我只是想知道,因为如果您输入#include <map>
,就会包含地图模板。
答案 0 :(得分:5)
尖括号(< >
)只告诉编译器它应该如何查找文件(而不是引号" "
)。该文件的内容无关紧要,它可以包含无论。
#include <map>
和template <...> map
中的尖括号没有任何关联。语法只是为完全不同的目的使用相同的字符。
答案 1 :(得分:1)
它包含一个头文件。它可能包含模板,但也可能只包含#define
语句,函数原型等。
答案 2 :(得分:1)
选择字符的主要原因之一是文件名中不常使用<>
和"
,因此它们可以制作非常好的字符来分隔文件名。
使用类似的逻辑,{+ 1}}和<
都不会出现在C ++标识符中,因此这些字符可用于分隔模板参数。
因此,虽然选择>
的逻辑相似,但实际的分隔名称是不相关的。
答案 3 :(得分:0)
至少考虑到当前大多数编译器处理模板的方式,是的。具体来说,大多数编译器需要“看到”模板的定义才能让您实例化该模板。
直到C ++ 03,(理论上)有一个export
关键字可以消除这个要求,但是大多数编译器都没有实现它,即使是那个微不足道的关键字,也没有使用它。无论如何,这样的图书馆。
答案 4 :(得分:0)
根据C ++ 11标准,标题包含此
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
包含很多模板。
早期的标准并没有明确说明标题<iostream>
必须包含的内容,只是它应该声明流。