std::array::max_size 和 std::array::size 给出不同结果的示例

Example where std::array::max_size and std::array::size gives different result

本文关键字:size std array 结果 max      更新时间:2023-10-16

每当我尝试使用max_size()size() std::array的功能时,我都会得到相同的结果,我想知道是否存在其中两个给出不同结果的情况。

函数的存在是为了与其他容器(如std::vector(兼容。对于std::array这两个值将始终相同。

这两个函数将始终返回相同的值,即N 对于std::array<T, N>

提供它们是为了与其他容器保持一致,其值会有所不同(例如 std::vector (。

没有这样的例子,因为数组是固定大小的容器。它们的当前大小与其最大大小相同,因为它们无法增长或缩小。

max_size()存在的原因是让您以可与C++标准库中的其他容器互换的方式使用std::array

当您的程序知道要std::array的容器的类型时,没有理由在上下文中使用max_size()

std::array::max_size()返回数组可以包含的最大元素数。数组的大小是编译时常量,是其类型的一部分。它只能容纳那么数量的元素。它包含的元素数量和它可以包含的元素数量对于std::array是一回事。

该特定函数不会增加太多std::array,但它的存在是为了与其他容器兼容,这些容器可以存储可变数量的元素。请考虑函数模板需要某种容器类型作为参数的情况。您可能有兴趣了解该容器的最大存储容量,而不是std::array或其他容器。

对于std::array,这两个函数是相等的,如文档中所述。尽管存在重复std::array::max_size() std::array因为它必须满足需要这种方法的概念容器。