如何在C ++中比较两个大向量的大小

时间:2013-05-17 14:47:54

标签: c++ vector bigdata

我有两个向量a,b。我想比较它们的大小。我知道我可以使用if(a.size()> b.size())。但我的问题是,如果a或/和b的类型int的大小太大。例如,a.size()是99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999等。如何比较a和b的大小?对不起我的英文。

1 个答案:

答案 0 :(得分:8)

矢量(或任何对象)的大小无法大于std::size_t可表示的大小。根据定义,该类型可以存储程序可以创建的最大对象的大小。

由于std::size_tstd::vector(或任何其他标准库容器)size()函数返回的类型,因此您可以安全地进行比较。


回复评论中的问题:

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

  • 在普通的32位系统(例如Win32)上,地址空间为32位,最大的对象(理论上)可以占用2个 32 字节,因此{{1至少32位长。

  • 在普通的64位系统(例如Win64)上,地址空间为64位,最大的对象可以(理论上)占用2个 64 字节,因此{{1至少64位长。

  • 在x86实模式下,地址空间为20位,但没有对象可以占用多个段。由于段为2 16 字节,当目标平台是x86实模式时,16位足以用于std::size_t