我有一个(愚蠢的?)关于循环的 C/C++ 问题:
for (size_t i = 0; i < std::distance(begin, end); ++i) {
a.push_back(i);
}
begin
和end
是两个迭代器。我的问题是,是否为循环中的每个元素计算了 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/