c – 开始(容器)和结束(容器)是否标准化?

前端之家收集整理的这篇文章主要介绍了c – 开始(容器)和结束(容器)是否标准化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
非成员函数模板是否开始(容器)和结束(容器)是C 0x的一部分?如果是这样,他们居住在哪个头文件中?

解决方法

是的,但正如交换在不同的地方定义并依赖于ADL一样,开始和结束也是如此. ‘通用’版本在< 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]);

另请注意,24.6.5说:

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>.

猜你在找的C&C++相关文章