fre*_*low 6 c++ containers iterator non-member-functions c++11
非成员函数模板begin(container)
和end(container)
C++ 0x的一部分吗?如果是这样,他们居住在哪个头文件中?
是的,但正如swap
在不同的地方定义并依赖于ADL,所以是begin
和end
.'通用'版本定义<iterator>
如下:
// 24.6.5, range access:
template <class C> auto begin(C& c) -> decltype(c.begin());
template <class C> auto begin(const C& c) -> decltype(c.begin());
template <class C> auto end(C& c) -> decltype(c.end());
template <class C> auto end(const C& c) -> decltype(c.end());
template <class T, size_t N> T* begin(T (&array)[N]);
template <class T, size_t N> T* end(T (&array)[N]);
Run Code Online (Sandbox Code Playgroud)
另请注意,24.6.5说:
除了是通过纳入的可用
<iterator>
头部,任何以下标题被包括在时的24.6.5函数模板是可用的:<array>
,<deque>
,<forward_list>
,<list>
,<map>
,<regex>
,<set>
,<string>
,<unordered_map>
,<unordered_set>
,和<vector>
.