是否需要包含头文件 <iterator> 才能使用开始和结束函数?

S W*_*ang 4 c++

要获取指向数组第一个和最后一个元素的指针,我们可以使用 begin 和 end 函数:https : //stackoverflow.com/a/14595314/5761266

但是,我注意到如果省略#include <iterator>. 为什么会出现这种情况,因为这些函数是在<iterator>标题中定义的?

我使用的唯一标题是<iostream>.
我使用的程序:http : //coliru.stacked-crooked.com/a/28b2b449aae19a47

Kar*_*oll 5

函数的返回类型必须事先完全定义。这意味着迭代器头必须包含在任何定义begin()andend()方法并返回完整迭代器对象* 的可迭代对象中。

这意味着,只要您使用标准容器(例如std::vectorstd::mapstd::list等)的标准库的头文件必须#include <iterator>某处之前begin()end()方法的声明。

因此你不需要#include <iterator>你自己,因为通过这样做#include <vector>(例如)你也会自动包含 iterator.h 。

请记住,当您#include创建头文件时,该头文件中包含的任何其他头文件也会自动包含#include在您的代码文件中。


*除非迭代器类型是完全自定义的并且不使用标准的迭代器层次类别