gpt4 book ai didi

c++ - 是否可以禁止修改 for 循环体内的循环变量?

转载 作者:行者123 更新时间:2023-12-02 00:39:42 26 4
gpt4 key购买 nike

在 C 或 C++ 中,修改 for 循环内的循环变量是令人讨厌的错误的根源:

int main() {
std::vector<int> v (30);
std::iota(v.begin(), v.end(), 0);
int j = 0;
for (size_t i = 0; i < v.size(); i++) {
std::cout << v[i] << ' ' << i << '\n';
i++; // oops, I mean j++
}
std::cout << j << '\n';
}

是否有任何方法可以借助编译器或其他方式禁止修改循环体内的循环变量或发出警告?如果可以的话我该怎么做?

最佳答案

如果您使用 C++ ranged-for,则可以将循环变量设为 const。例如

for (const size_t i : boost::irange<size_t>(0, v.size()))
{
std::cout << v[i] << ' ' << i << '\n';
// i++; // error, can't modify const
}

关于c++ - 是否可以禁止修改 for 循环体内的循环变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58713726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com