C++ 以正确的方式在循环中声明变量?
我试图在一个循环中声明变量,我做了一些研究,但仍然不知道哪种方法最好 到目前为止,我的代码是:C++ 以正确的方式在循环中声明变量?,c++,loops,declaration,C++,Loops,Declaration,我试图在一个循环中声明变量,我做了一些研究,但仍然不知道哪种方法最好 到目前为止,我的代码是: 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 } fo
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
}
for(unsigned int i=0;i这取决于具体情况。如果你有一个大循环,你可能会因为过于频繁地创建局部变量而面临一些性能问题。如果不是这样,那么最好尽可能多地本地化你的代码,并且只在你需要变量的时候声明变量
顺便问一下,你确定char[2]大到足以存储您的代码> i>代码>变量。我相信,由于 > >代码> > 9代码>代码>您将遇到一些问题。如注释中提到的< P>,在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 Do(5);//包含5个布尔值,全部初始化为false
for(无符号整数i=0;i
值得注意的是,std::vector
针对空间进行了优化:每个元素将占用一位,而不是sizeof(bool)
。这对于非性能关键的东西来说是可以的。你想在这里实现什么?通过添加一个带有字符数组的布尔值,你期望得到什么?@EdChum我有一个5个不同的somedata,它将通过bool_函数进行检查,我需要5个结果bool Do1 Do2 Do3..do5你不能在变量名中包含+
。你可能需要想要一个布尔数组(实际上是向量)没有“动态”的方法在运行时确定的变量名。最接近的可能是std::map
之类的。为了使其正常工作,循环将达到最大值9。我的问题是此循环位于从main调用的函数内,我不知道某个函数的大小。size(),每次都是随机的。我在想有更好的方法来创建bool,而不是在所有bool d1、d2、d3之前声明它们。是否可以像std::vector Do(something.size())?