std::array::max_size 和 std::array::size 给出不同结果的示例
Example where std::array::max_size and std::array::size gives different result
每当我尝试使用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
因为它必须满足需要这种方法的概念容器。
相关文章:
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 为什么 GCC 不能假设 std::vector::size 在这个循环中不会改变?
- 迭代器库中的 std::size() 不适用于传递给函数的 C 样式数组
- std::string.size() 未知行为
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 使用 std::size 来自非 const 上下文
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 为什么我必须在初始化 std::array<SomeStruct, size> 时指定每个项目的类型C++
- 为什么会出现错误:size不是std的成员
- 没有名为'size'在名称空间'std'
- std::具有initializer_list和size的unordered_map构造函数在main中编译,但不在类定
- 使用 constexpr 作为 std::array size
- std::span.size() vs array/vector size
- std ::向量距离函数如何给出比.size()更高的值
- 'std::out_of_range' what(): vector::_M_range_check: __n (即 0) >= this->size() (即 0)
- 在 c++ 中,std::string::size() 不计算修改后的字符串长度
- std::list.size() 如何具有恒定的复杂性?
- "Safe"将元素添加到 std::vector 的方法,超出了其 size() 但低于其容量 ()
- 成员功能在面向对象的框架中返回std :: vector.size()的效率
- std::array::max_size 和 std::array::size 给出不同结果的示例