以正确的方式在循环内声明变量?
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
变量的字符串表示形式吗?我相信由于 i
比 9
大,你会遇到一些问题。
正如 πάντα ῥεῖ 在评论中提到的,您不能在 C++ 中在运行时动态创建新的变量名。所有变量名称必须在编译时已知。您在这里需要做的是改用数组索引。
例如,将somedata
和Do
改为std::vector
s。像这样:
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)
。这对于非性能关键的东西是可以的。
我正在尝试在循环内声明变量,我做了一些研究,但仍然不知道哪种方法是实现它的最佳方法。
到目前为止我的代码:
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
变量的字符串表示形式吗?我相信由于 i
比 9
大,你会遇到一些问题。
正如 πάντα ῥεῖ 在评论中提到的,您不能在 C++ 中在运行时动态创建新的变量名。所有变量名称必须在编译时已知。您在这里需要做的是改用数组索引。
例如,将somedata
和Do
改为std::vector
s。像这样:
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)
。这对于非性能关键的东西是可以的。