c ++:创建一个没有#include <iterator> </iterator>的insert_iterator

时间:2013-02-16 18:15:45

标签: c++ insert-iterator

在下面的代码中,我创建了一个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);
}

1 个答案:

答案 0 :(得分:7)

恰好编译,因为您的案例中的其他标题<list>也在提取<iterator>。这可能适用于一个实现,但在另一个实现上失败,甚至在当前库实现的下一个版本上失败。

你应该总是包含定义你使用的东西的标题,以确保它将在任何地方编译。请注意,有一些标准头文件的保证由其他标准头文件提取,但我不认为这是其中一个例外。