数组大小元函数 - 是否在某处提升?

pap*_*jam 14 c++ arrays templates boost sizeof

我在博客上找到了以下模板:

template <typename T, size_t N>
struct array_info<T[N]>
{
    typedef T type;
    enum { size = N };
};
Run Code Online (Sandbox Code Playgroud)

这是一个优雅的替代品sizeof(a) / sizeof(a[0]).

获取数组大小的常用构造肯定应该在库中的某个位置.我不知道一个.任何人都可以告诉我这个功能是在某个地方和/或Boost的标准库中吗?优选地,以易于使用和轻质的形式.

pap*_*jam 26

我最终找到了答案 - boost::size():

#include <boost/range.hpp>

int array[10];
boost::size(array); // returns 10
Run Code Online (Sandbox Code Playgroud)


Sh4*_*4pe 5

在新的C++标准中,头文件中的std :: array具有方法size(),它返回constexpr,因此在编译时可用.

你应该能够做类似的事情

std::array< YourType, N > arr;
constexpr auto totalSize = arr.size() * sizeof( std::array< YourType, N >::value_type );
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...