Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以正确的方式在循环中声明变量?_C++_Loops_Declaration - Fatal编程技术网

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())?