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

jor*_*gez 2 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);
}
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 7

它恰好编译,因为<list>在你的情况下,其他一些标题也在拉动<iterator>.这可能适用于一个实现,但在另一个实现上失败,甚至在当前库实现的下一个版本上失败.

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