size_t std::array 中的模板参数
size_t template parameter in std::array
std::array 模板参数是 template < class T, size_t N > class array;
,其中 N 代表数组中的元素数。
我的疑惑是为什么类型是std::size_t
? std::size_t 不是 object/pointer 字节大小的别名吗? std::size_t
这里为什么用std::array
表示元素个数?
类型std::size_t
被定义为可以表示最大可能对象大小的数值类型(例如,N字节)。
最大的对象可能是一个数组,因此具有最多可能对象的数组是 N char
s.
的数组
所以,.
您应尽可能遵守此约定,否则可能会引入错误:
std::size_t
is commonly used for array indexing and loop counting. Programs that use other types, such as unsigned int
, for array indexing may fail on, e.g. 64-bit systems when the index exceeds UINT_MAX
or if it relies on 32-bit modular arithmetic (cppref)
我们本来可以用 std::index_t
代替,但它会和 std::size_t
一样,所以那没有意义。
std::array 模板参数是 template < class T, size_t N > class array;
,其中 N 代表数组中的元素数。
我的疑惑是为什么类型是std::size_t
? std::size_t 不是 object/pointer 字节大小的别名吗? std::size_t
这里为什么用std::array
表示元素个数?
类型std::size_t
被定义为可以表示最大可能对象大小的数值类型(例如,N字节)。
最大的对象可能是一个数组,因此具有最多可能对象的数组是 N char
s.
所以,
您应尽可能遵守此约定,否则可能会引入错误:
std::size_t
is commonly used for array indexing and loop counting. Programs that use other types, such asunsigned int
, for array indexing may fail on, e.g. 64-bit systems when the index exceedsUINT_MAX
or if it relies on 32-bit modular arithmetic (cppref)
我们本来可以用 std::index_t
代替,但它会和 std::size_t
一样,所以那没有意义。