C++ for 循环 : evaluation of condition

标签 c++ performance for-loop conditional-statements

我有一个(愚蠢的?)关于循环的 C/C++ 问题:

for (size_t i = 0; i < std::distance(begin, end); ++i) {
  a.push_back(i);
}

beginend 是两个迭代器。我的问题是,是否为循环中的每个元素计算了 std::distance(begin, end)?还是使用这个版本更好:

size_t dist = std::distance(begin, end);
for (size_t i = 0; i < dist; ++i) {
  a.push_back(i);
}

最佳答案

第二个版本更好。在第一个条件中,每次都会评估条件(不会自动假设结果是不变的)。

关于C++ for 循环 : evaluation of condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928147/

相关文章:

c++ - QOpenGLFramebufferObject绑定(bind)纹理

c++ - 来自 n 个字符的长度为 k 的所有排列,在 CPP 中有重复

.net - typeof(T) 与 o.GetType()

javascript - 使用对象 javascript 在对象数组中搜索

algorithm - 使用 for 循环递增值时计算 n 的值

c++ - 如何让这个模板类编译?

c++ - 使用 OpenCV 将图像区域移动到中心

java - 加速/提高 Java 数组类的性能

arrays - 比较不在循环中的向量的所有元素

c - 字符串打印问题