在一个STL平台上能够编译通过的软件,在另外一个平台上可能需要一些额外的#include指令才能通过编译。
你不能将移植的困难归咎于编译器或者类库实现,如果你漏掉了必要的头文件,那么这是自己的错。
任何时候只要你引用了std名字空间中的元素,你就有责任包含正确的头文件。如果省略了这些头文件,可能在特定的STL平台上可以通过编译,但是其他平台完全有可能拒绝编译通过。
下面是几条提示:
-
几乎所有的标准STL容器都呗声明为与之同名的同文件中。比如vector被声明在中,list被声明在</list/>中等等。
但是和 -
accumulate、inner_product、adjacent_difference、partial_sum被声明在中,其他所有算法都在中。
-
特殊类型的迭代器,包括istream_iterator、istreambuf_iterator被声明在中。
-
标准的函数子(如less)和函数配接器(例如not1、bind2nd)被声明在头文件中。