作者:缅甸钻石国际开户集团 | 来源:互联网 | 2023-05-20 17:38
我的理解size_t
是它足够大以容纳你可能期望它保持的任何(整数)值.(也许这是一个糟糕的解释?)
例如,如果你使用像for循环这样的东西迭代向量中的所有元素,size_t
通常会是64位长(或者至少在我的系统上),以便它可以保存来自vector.size的所有可能的返回值( ).
或者至少,我认为这是正确的?
因此,有没有理由使用A而不是B:
A: for(uint64_t i = 0; i
B: for(size_t i = 0; i
如果我的解释错了或者您有更好的解释,请随时编辑.
编辑:我应该补充一点,我的理解是size_t
行为像普通的无符号整数 - 也许这是不正确的?
1> Deduplicator..:
size_t
是回归类型sizeof
.
该标准表示它是某种无符号整数类型的typedef,并且大到足以容纳任何可能对象的大小.
但它并没有强制要求它是更小,更大还是相同uint64_t
(对于固定宽度的64位无符号整数的typedef),在后一种情况下它是否是相同的类型.
因此,在语义正确的地方使用size_t
.
就像size()
a std::vector
(从使用的分配器std::vector
获取它size_type
,std::allocator
使用size_t
).
2> amchacon..:
uint64_t保证为64位.如果你需要64位,你应该使用它.
size_t不保证是64位; 它可能是未来机器中的128位.所以,关键字uint_64由它保留:)