- 主题:size_t和int比较时哪种写法效率更高?
int n;
vector<double> vec;
是 (size_t)n < vec.size() 还是 n < (int)vec.size() 效率高?假设64位程序。
--
FROM 124.207.9.*
size_t是无符号数
--
FROM 101.243.155.*
除了是unsigned,size_t移植性更好,不是固定bit数目的,最大值取决于机型/编译模式。
把STL size()返回的size_t转为int什么的,不是好习惯,因为size_t在x64模式下编译可能是64-bit的。
正常应该把n定义为size_t类型,避免转换。有极端性能要求的场合另行考虑。
--
修改:z16166 FROM 125.33.229.*
FROM 125.33.229.*
.......
size_t是万恶之源
取消 size_t全用int才是正统
【 在 z16166 (Netguy) 的大作中提到: 】
: 除了是unsigned,size_t移植性更好,不是固定bit数目的,最大值取决于机型/编译模式。
: 把STL size()返回的size_t转为int什么的,不是好习惯,因为size_t在x64模式下编译可能是64-bit的。
: 正常应该把n定义为size_t类型,避免转换。有极端性能要求的场合另行考虑。
: ...................
--
FROM 221.219.211.*
会有人往 vector/linked_list 里面写超过 2^32 数量的元素?
【 在 z16166 (Netguy) 的大作中提到: 】
: 除了是unsigned,size_t移植性更好,不是固定bit数目的,最大值取决于机型/编译模式。
: 把STL size()返回的size_t转为int什么的,不是好习惯,因为size_t在x64模式下编译可能是64-bit的。
: 正常应该把n定义为size_t类型,避免转换。有极端性能要求的场合另行考虑。
: ...................
--
FROM 112.47.122.*
strlen、memcpy之类的,都是size_t
【 在 hgoldfish 的大作中提到: 】
: 会有人往 vector/linked_list 里面写超过 2^32 数量的元素?
:
--
FROM 125.33.229.*
为什么是万恶之源?
【 在 iwantfly 的大作中提到: 】
: .......
: size_t是万恶之源
: 取消 size_t全用int才是正统
: ...................
--
FROM 125.33.229.*
道理我懂啊。我只是想问,有谁见过一次性处理 4gb 内存和 4g 元素列表的代码没?是什么场景。
【 在 z16166 (Netguy) 的大作中提到: 】
: strlen、memcpy之类的,都是size_t
--
FROM 112.47.122.*
俺没这么用过
不过既然有这种接口,有人这么用也不奇怪吧
比如fread()一次把整个iso文件的内容全部read/map到内存中
桌面级的pc已经支持128/256G的内存,服务器的内存更大,file size也是size_t的。
【 在 hgoldfish 的大作中提到: 】
: 道理我懂啊。我只是想问,有谁见过一次性处理 4gb 内存和 4g 元素列表的代码没?是什么场景。
:
--
修改:z16166 FROM 125.33.229.*
FROM 125.33.229.*
估计是在恨unsigned吧。当时日子紧吧的时候设计的东西,很多场景下反而是坑了
【 在 z16166 (Netguy) 的大作中提到: 】
: 为什么是万恶之源?
--
FROM 1.203.173.*