kaj*_*331 0 c++ vector bigdata
我有两个矢量a,b.我想比较它们的大小.我知道我可以使用if(a.size()> b.size()).但我的问题是,如果a或/和b的类型int的大小太大.例如,a.size()是99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999等.如何比较a和b的大小?对不起我的英语不好.
矢量(或任何对象)的大小不可能大于可表示的大小std::size_t.根据定义,该类型可以存储程序可以创建的最大对象的大小.
与s(或任何其他标准库容器)函数std::size_t返回的类型一样,您可以安全地比较它们.std::vectorsize()
回复评论中的问题:
std::size_t不是无限的(在有限的计算机中,没有任何东西).但它保证足够大,可以容纳任何物体的大小.注意特定于数组也是一个对象.std::size_tRAM也不仅仅受到RAM的限制,更多的是您正在构建的平台.例子:
在普通的32位系统(例如Win32)上,地址空间是32位,最大的对象(理论上)可以占用2 32个字节,因此std::size_t至少32位长.
在普通的64位系统(例如Win64)上,地址空间为64位,最大的对象(理论上)可以占用2 64个字节,因此std::size_t至少为64位长.
在x86实模式下,地址空间为20位,但没有对象可以占用多个段.由于段是2 16字节,std::size_t当目标平台是x86实模式时,16位就足够了.