gpt4 book ai didi

c++ - 如何在 C++ 中比较两个大 vector 的大小

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:22 24 4
gpt4 key购买 nike

我有两个 vector a、b。我想比较一下它们的大小。我知道我可以使用 if (a.size() > b.size())。但我的问题是对于 a 或/和 b 来说,大小是否超出了 int 类型。例如,a.size() 是 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 999999999999999999999 等。如何比较 a 和 b 的大小?对不起我的英语。

最佳答案

vector (或任何对象)的大小不可能大于 std::size_t 所表示的大小.根据定义,该类型可以存储程序可以创建的最大对象的大小。

作为std::size_tstd::vector 返回的类型的(或任何其他标准库容器的)size()功能,您可以安全地比较它们。


在评论中回复问题:

std::size_t不是无限的(在有限的计算机中,什么都不是)。但它保证足够大,可以容纳任何可能的物体。注意 ion 特定于数组也是一个对象。 std::size_t也不受 RAM 的限制,更多的是受您正在构建的平台的限制。示例:

  • 在普通的 32 位系统(例如 Win32)上,地址空间是 32 位的,最大的对象(理论上)可以占用 232 个字节,所以 std::size_t至少有 32 位长。

  • 在普通的 64 位系统(例如 Win64)上,地址空间是 64 位的,最大的对象(理论上)可以占用 264 个字节,所以 std::size_t至少有 64 位长。

  • 在 x86 实模式下,地址空间是 20 位,但没有对象可以占用超过一个段。因为段是 216 字节, std::size_t 16 位足够了当目标平台是 x86 实模式时。

关于c++ - 如何在 C++ 中比较两个大 vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611914/

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