我对size_t
的理解是,它足够大,可以容纳任何(整数)值,您可能认为它需要保持。 (也许这是一个不好的解释?)C++:是否有任何理由使用uint64_t,而不是size_t
例如,如果您使用类似for循环遍历向量中的所有元素,size_t
通常是64位长(或至少在我的系统上)为了它可以从vector.size()中保存所有可能的返回值。
或者至少,我认为这是正确的?
因此,没有任何理由使用,而不是B:
答:for(uint64_t i = 0; i < v.size(); ++ i)
B:for(size_t i = 0; i < v.size(); ++ i)
如果我错了,我的解释,或者你有更好的解释,请随时编辑。
编辑:我应该补充一点,我的理解是,size_t
行为像一个正常的无符号整数 - 也许这是不正确的?
如果您需要确保您的int无论出于何种原因(通常是字节操作)都是64位。 'size_t'可以根据您的系统和编译选项而有所不同 – 2015-02-23 23:37:09
'size_t'不能保证是64bit – dtech 2015-02-23 23:46:56
如果您在32位目标上使用'uint64_t',那么性能可能会远远低于最佳性能。 – sharptooth 2016-03-15 07:04:22