Are begin(container) and end(container) standardized?
Are the non-member function templates begin开发者_StackOverflow(container) and end(container) part of C++0x? If so, in which header file do they live?
Yes, but just as swap is defined in different places and depends on ADL, so are begin and end. The 'generic' versions are defined in <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]);
Note also that 24.6.5 says:
In addition to being available via inclusion of the
<iterator>header, the function templates in 24.6.5 are available when any of the following headers are included:<array>,<deque>,<forward_list>,<list>,<map>,<regex>,<set>,<string>,<unordered_map>,<unordered_set>, and<vector>.
加载中,请稍侯......
精彩评论