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

标签 c++ insert-iterator

在下面的代码中,我创建了一个不包含迭代器 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/

相关文章:

c++ - 使用 std::copy 插入 STL 队列

c++ - 如何避免使用插入迭代器调用复制构造函数

c++ - 将 .begin() 与 .end() 用于 std::inserter 用于 std::set 之间有区别吗?

c++ - 在单元测试时操作迭代器

c++ - 如果我们在 STL 容器中传递用户定义的对象,对象销毁的顺序是什么?

c++ - 从通用基类继承多次时的歧义调用

c++ - std::为无序集(或映射)插入迭代器?

c++ - 指针数组的段错误

c++ - Void ** 一个通用指针?