以正确的方式在循环内声明变量?

Declare variables inside loops the right way?

我正在尝试在循环内声明变量,我做了一些研究,但仍然不知道哪种方法是实现它的最佳方法。

到目前为止我的代码:

for (unsigned int i = 0; i<something.size(); i++){
        char name[2];
        itoa (i, name,10);
        bool Do+name = bool_function(somedata+name); //<- bool Do+name is the new variable
}

视情况而定。如果你有一个巨大的循环,你可能会因为过于频繁地创建局部变量而面临一些性能问题。如果不是这种情况,那么尽可能本地化代码并仅在需要时才声明变量可能是一个好习惯。

顺便说一句,您确定 char[2] 足够大以存储 i 变量的字符串表示形式吗?我相信由于 i9 大,你会遇到一些问题。

正如 πάντα ῥεῖ 在评论中提到的,您不能在 C++ 中在运行时动态创建新的变量名。所有变量名称必须在编译时已知。您在这里需要做的是改用数组索引。

例如,将somedataDo改为std::vectors。像这样:

std::vector<bool> Do(5); // contains 5 bools, all initialized to false

for (unsigned int i = 0; i < something.size(); i++) {
        Do[i] = bool_function(somedata[i]);
}

值得注意的是,std::vector<bool>针对space进行了优化:每个元素将占用一位,而不是sizeof(bool)。这对于非性能关键的东西是可以的。