【问题标题】:c++: create a insert_iterator without #include <iterator>c ++:创建一个不带#include <iterator>的insert_iterator
【发布时间】:2013-02-16 18:15:44
【问题描述】:

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

【问题讨论】:

    标签: c++ insert-iterator


    【解决方案1】:

    它恰好可以编译,因为其他一些标头(在您的情况下为 &lt;list&gt;)也在拉动 &lt;iterator&gt;。这可能适用于一个实现,但在另一个实现上会失败,甚至在当前库实现的下一个版本上会失败。

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

    【讨论】:

    • @jorgez:请记住,你不能转发这个
    猜你喜欢
    • 2018-10-29
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多