在cppreference.com中,它指出begin()
和end()
函数在头文件< iterator >
中定义。但我仍然可以使用begin()
和end()
函数,而不包含< iterator >
标题。我想知道为什么?是因为我使用;
using namespace std;
所以包括在内?
答案 0 :(得分:9)
阅读same page上的说明:
除了包含在
<iterator>
中之外,如果包含以下任何标头,std::begin
保证可用<array>
,<deque>
,<forward_list>
},<list>
,<map>
,<regex>
,<set>
,<string>
,<unordered_map>
,<unordered_set>
和<vector>
除了这些标题列表之外,std::begin
也可能包含在其他标题中。
答案 1 :(得分:1)
不,using namespace xxx
不包含任何头文件。这只表示您可以写begin()
而不是std::begin()
。必须通过您在.cpp中包含的其他标题包含<iterator>
标题。