【发布时间】:2015-04-25 11:26:32
【问题描述】:
我对@987654321@ 的理解是,它足够大,可以容纳您可能期望它必须容纳的任何(整数)值。 (也许这是一个糟糕的解释?)
例如,如果您使用 for 循环之类的东西来遍历向量中的所有元素,size_t 通常是 64 位长(或至少在我的系统上),以便它可以保存所有可能的返回来自 vector.size() 的值。
或者至少,我认为这是正确的?
因此,是否有任何理由使用 A 而不是 B:
答:for(uint64_t i = 0; i < v.size(); ++ i)
乙:for(size_t i = 0; i < v.size(); ++ i)
如果我的解释有误或您有更好的解释,请随时编辑。
编辑:我应该补充一点,我的理解是 size_t 的行为就像一个普通的无符号整数 - 也许这不正确?
【问题讨论】:
-
如果您需要硬保证无论出于何种原因(通常是字节操作)您的 int 将是 64 位。
size_t可能因您的系统和编译选项而异 -
size_t不保证为 64 位 -
如果您在 32 位目标上使用
uint64_t,您可能会获得远非最佳的性能。