在下面的代码中,我创建了一个不包含迭代器 header 的 insert_iterator。 这怎么可能编译?我是 c/c++ 的新手,所以这可能会有一个令人生厌的解释。
#include <list>
//#include <iterator>
int main()
{
std::list<int> mylist(10,1);
std::insert_iterator<std::list<int> > it(mylist,mylist.begin());
return(0);
}
最佳答案
它恰好可以编译,因为其他一些 header ,<list>
在你的情况下,正在拉动 <iterator>
以及。这可能适用于一个实现,但在另一个实现上失败,甚至在当前库实现的下一个版本上失败。
您应该始终包含定义您使用的内容的 header ,以确保它可以在任何地方编译。请注意,标准 header 有一些保证会被其他标准 header 提取,但我认为这不是其中之一。
关于c++: 创建一个没有#include <iterator> 的 insert_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913531/