【发布时间】:2011-07-01 09:29:04
【问题描述】:
我正在构建自己的 array<T, n> 课程模板,用于娱乐和教育。 C++0x 标准草案将所有容器的成员函数max_size() 指定为distance(begin(), end())“用于最大可能的容器”。如何为数组实现此成员函数?我是直接返回std::numeric_limits<std::size_t>::max(),还是应该根据元素类型返回结果?
嗯,来自当前 g++ 的 std::array 和来自 max_size() 的 boost::array 返回 n:
#include <array>
#include <boost/array.hpp>
#include <iostream>
int main()
{
std::array<int, 11> foo;
std::cout << foo.max_size() << std::endl; // prints 11
boost::array<int, 11> bar;
std::cout << bar.max_size() << std::endl; // prints 11
}
【问题讨论】:
标签: c++ arrays stl c++11 aggregate