我只是想知道,因为如果你输入#include <map>
,你包括地图模板。当您输入#include <iostream>时,您是否包含模板?
回答
尖括号(< >
)只是告诉编译器应该如何查找文件(而不是报价" "
)。该文件的内容是无关的,它可以包含无论。
在#include <map>
和template <...> map
尖括号不具有相关性任何。语法只是为了完全不同的目的使用相同的字符。
我明白了,谢谢。 – 2012-03-11 18:29:13
它包括一个头文件。它可以包含模板,但也可能只包含#define
语句,函数原型等
谢谢。为什么我们使用尖括号,而不是#include“iostream.hh”? – 2012-03-11 18:28:16
它们意味着不同的事物,这两个实现都定义了。如果''“'搜索失败,则执行回到'<>'的情况。在大多数实现中,''“'搜索当前目录,'<>'搜索系统头目录。查看C++规范部分16.2。 – 2012-03-11 18:31:22
我看,谢谢,:) – 2012-03-11 18:52:07
至少给出最新的编译器处理模板的方式,是的。具体来说,大多数编译器需要在看到模板的定义之后才能让您实例化该模板。
直到C++ 03,(理论上)有一个export
关键字可以消除这个要求,但是大多数编译器从来没有实现过它,甚至没有使用它的大部分库,无论如何。
根据该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>
必须包括明确的,只是它应该宣布流。
选择字符的主要原因之一是文件名中通常不会使用<>
和"
,因此它们会为分隔文件名提供非常好的字符。
使用类似的逻辑,在C++标识符中都不会出现<
和>
,所以可以使用这些字符来分隔模板参数。
所以,而对于<>
选择的逻辑是相似的,分隔的实际名称是不相关的。
- 1. 注入JavaScript您是否<img> -tag
- 2. 当您需要从模板中继承时,您如何从模板类继承?
- 3. 输入您在
- 4. 当您保存您的代码时,Android模拟器是否更新您的应用程序?
- 5. Angular使用ng-include包含一个包含其他模板
- 6. 当您在<head>
- 7. 如果您在.h文件中包含某些内容您是否必须再次包含相同的内容?
- 8. 什么是您的个人模板?
- 9. Java toString() - 您是否在toString中包含了类名?
- 10. 您是否允许使用包含语句的find_each查询?
- 11. 您是否在输入或输出过程中使用HtmlEncode?
- 12. ng-include不包括模板
- 13. 当您有CI服务器时,您是否必须在本地运行测试?
- 14. 是否有通过包含模板来分组模板?
- 15. 当您可以使用动态LINQ时,规范模式是否已过时?
- 16. 您的域模型对象中包含什么以及您的服务中包含了哪些内容?
- 17. #include <Dbghelp.h>不包含头文件
- 18. 您是否使用任何第三方数据输入控件?
- 19. 消息框,需要您输入是或否
- 20. 您是否在form_validation之后发布输入值?
- 21. ExpressionEngine - >模板包含(S)
- 22. 当不级联字段时,您是否需要使用@Transient?
- 23. 当您使用m.render时,mithril.js是否使用DOM差异?
- 24. 您的项目位置包含空白。
- 25. $在Java中包含#include相当于?
- 26. WCF是否适合您?
- 27. PHP:包含模板系统
- 28. 您可以使用select-2在下拉列表中包含输入字段吗?
- 29. Source Safe 2005是否允许您在登入时更改格式?
- 30. 您是否将您的Perl应用程序开发为CPAN模块?
你试过看那个头文件吗? – 2012-03-11 18:25:33
@CarlNorum:第一行可能是“浏览器谨慎建议”;)严重的是,它通常不会被凡人读取。 – MSalters 2012-03-12 09:51:30