让我们来举一个最简单的例子:
公式 1:
std::vector<int> vec;
// add 10E11 elements
for(std::size_t n = 0; n < vec.size(); ++n)
// ...
表述2:
std::vector<int> vec;
// add 10E11 elements
for(std::vector<int>::size_type n = 0; n < vec.size(); ++n)
// ...
自然地,`unsigned int`或任何不合适的数据类型在这里都不起作用,我们必须编译x64。我的问题是:是否有任何情况下第一种公式会导致问题,或者我们可以安全地总是使用这种更短的表示法?如果有类似的设置(x86、任何其他容器、`size_type`的其他应用),我也很感兴趣。
auto
,就不会有这个问题了...;-) - DevSolarit-vec.begin()
,更改迭代器为it += x
。但这只是吹毛求疵,我理解你的观点。我希望你也能理解我的观点。;-) - DevSolarauto n = vec.size() * 0;
。 - M.M