stl跟qt里的容器,容量的限制在哪
stl和qt里的容器,容量的限制在哪?
stl里的size()返回类型是size_type,手册里说
This expression must be a typedef, that is, a synonym for a type that already has some other name.
是否意味着这个无符号整型可以是uint也可以是ulong?
qt里模仿stl的容器在size()的返回类型上就比较单一了,是int
那么这些容器的容量是否就受这些数据类型的取值范围限制呢?一个比int还长的数组也不是不可能用到
------解决方案--------------------
没办法分配那么多内存的,所以int范围足够了
------解决方案--------------------
32位是4G,服务器的内存十多G这都是很正常的事了,所以在64位的系统中,用得上也不奇怪
------解决方案--------------------
真想用比如大于32GB的数组,可以用文件读写模拟内存读写,参考_lseeki64函数。
------解决方案--------------------
从现实来讲,这不算一个限制,可以使用局部化原则处理数据便是。STL是要通用,不是万能。
------解决方案--------------------
“一个比int还长的数组也不是不可能用到”
还真不可能,如果有这个需求,你的算法得改了。
stl里的size()返回类型是size_type,手册里说
This expression must be a typedef, that is, a synonym for a type that already has some other name.
是否意味着这个无符号整型可以是uint也可以是ulong?
qt里模仿stl的容器在size()的返回类型上就比较单一了,是int
那么这些容器的容量是否就受这些数据类型的取值范围限制呢?一个比int还长的数组也不是不可能用到
------解决方案--------------------
没办法分配那么多内存的,所以int范围足够了
------解决方案--------------------
32位是4G,服务器的内存十多G这都是很正常的事了,所以在64位的系统中,用得上也不奇怪
------解决方案--------------------
真想用比如大于32GB的数组,可以用文件读写模拟内存读写,参考_lseeki64函数。
------解决方案--------------------
size_type max = ~0U;
从现实来讲,这不算一个限制,可以使用局部化原则处理数据便是。STL是要通用,不是万能。
------解决方案--------------------
“一个比int还长的数组也不是不可能用到”
还真不可能,如果有这个需求,你的算法得改了。