gpt4 book ai didi

c++ - 为什么 std::array 中的 size_type 是 size_t ,而 std::vector 中的 size_type 通常是 size_t ?

转载 作者:行者123 更新时间:2023-12-01 18:05:20 29 4
gpt4 key购买 nike

文档说,std::vectorsize_type 是/usually/size_t,这是合理的,因为实现可以选择使用不同的。

但是为什么 size_type = size_t 位于 std::array 中。尤其是这里,由于 std::array 在小型 μC 上使用较多,因此最好让实现有一些自由度。

这是文档缺陷吗?

最佳答案

之所以这样定义,是因为 size_t 被定义为足以满足所有数组的需要。如果您想要较小的数组使用较小的类型,您始终可以根据 constexpr 值适当缩小范围。

template <typename Array>
struct small_array_size
{
using type = size_t
};

template <typename T, size_t N, typename = std::enable_if_t<N < 256>>
struct small_array_size<std::array<T, N>>
{
using type = uint8_t;
};

template <typename T, size_t N, typename = std::enable_if_t<N < 65536>>
struct small_array_size<std::array<T, N>>
{
using type = uint16_t;
};

template <typename Array>
using small_array_size_t = typename small_array_size<Array>::type;

关于c++ - 为什么 std::array 中的 size_type 是 size_t ,而 std::vector 中的 size_type 通常是 size_t ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58743239/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com