任意给定类型T的内置阵列X,也有功能std::begin()和std::end()我可以打电话,但为什么是不是有std::size()?似乎奇怪没有那个.
我可以使用std::end(x)-std::begin(x),但仍然std::size(x)会更好.
是的,我知道这些std::vector和std::array课程.这只是一个问题,为什么STL中还没有这样简单的东西.
Ker*_* SB 14
有std::extent,这将应用于数组的类型:
#include <type_traits>
int a[12];
assert(std::extent<decltype(a)>::value == 12);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用std::distance(std::begin(a), std::end(a)).
前者显然是一个不变的表达,但在实践中,后者也可以静态地进行计算.
最后,总有一个本土的解决方案:
template <typename T, std::size_t N>
constexpr std::size_t array_size(T const (&)[N])
{ return N; };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |