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

的数组

所以,.

您应尽可能遵守此约定,否则可能会引入错误:

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 一样,所以那没有意义。