stl中的vector源代码问题

f1msch 发布于 2015/03/19 16:53
阅读 158
收藏 0
size_type max_size() const { return size_type(-1) / sizeof(T); }
以上是vector源码中求maxsize的函数,这里面为什么要用size_type(- 1)去求值?size_type(- 1)又是什么含义呢?
加载中
1
平原君
平原君
这个跟负数的二进制表示有关系,你可以看下补码。简单的说,就是size_type(-1)就是最大的size_type值(size_type就是unsigned int),这样就可以求出max_size了
0
ruki
ruki

如果在32bits上,就是 0xffffffff / sizeof(T) 

如果在64bits上,就是 0xffffffffffffffffULL / sizeof(T) 

也就是 最大项数

0
hzh62
hzh62

 

写法比较诡异,实际效果是一样的,其实应该用下面的几个常量来代替更直观。

位于  /usr/include/stdint.h

# define INT8_MAX               (127)
# define INT16_MAX              (32767)
# define INT32_MAX              (2147483647)
# define INT64_MAX              (__INT64_C(9223372036854775807))

 

0
songtzu
songtzu

返回类型是size_type 

-1是值

返回顶部
顶部