C++ C++;为下一次迭代保留索引?
我有一个循环,我想在其中为下一次迭代保留值。我决定使用C++ C++;为下一次迭代保留索引?,c++,C++,我有一个循环,我想在其中为下一次迭代保留值。我决定使用std::vector(虽然我不知道这是否是最好的方法),但当我检查if(bottomMap[I]==true)时,它不会编译 vector<bool> bottomMap; for (int i = 0; i < str.size() ; i++){ if (str[i] != ' ') { cout << "XXXX"; } else { if (bott
std::vector
(虽然我不知道这是否是最好的方法),但当我检查if(bottomMap[I]==true)
时,它不会编译
vector<bool> bottomMap;
for (int i = 0; i < str.size() ; i++){
if (str[i] != ' ') {
cout << "XXXX";
} else {
if (bottomMap[i] == true)
cout << "YYYY";
else
cout << "X";
}
}
vector <bool> bottomMap(topMap);
}
矢量地图;
对于(int i=0;i cout因为在你使用bottommap的地方,它不知道它的定义。你必须在使用它之前定义它。在循环开始之前,bottommap必须存在
for (int i = 0; i < str.size() ; i++){
if (str[i] != ' ') {
cout << "XXXX";
} else {
if (bottomMap[i] == true) //< ERROR: bootomMap here is not declred.
cout << "YYYY";
else
cout << "X";
}
}
vector <bool> bottomMap(topMap); //< Declared here, but destroyed to the very next '}'
}
for(int i=0;i coutbottomMap
在其声明之前使用。编译器怎么说?我也在循环之前声明它。在使用它之前必须定义变量,这显然不是这里的情况。此外,由于您希望在迭代之间保留值,您应该在foor循环体外部定义向量-在本例中为outide是循环本身。实际上,它是编译的,但不会打印任何内容:(我在loop之前声明了它。我发布的代码部分中也没有定义topMap向量,bottomMap在循环之前也定义得很好,但不幸的是,这并没有改变我的问题。我犯了一个错误,实际上它编译了,但当我添加该条件时它没有打印任何内容,如果(bottomMap[I]=true)至少,我学到了一些关于代码样式的知识。谢谢你,EmiliotopMap向量也没有在我发布的代码部分中定义:是的,我假设它在以前的某个地方,但是…bottomMap在循环之前也定义得很好:如果是这样的话,以后就不能重新定义它了(除非它在另一个外部作用域中,但新的作用域将隐藏上一个作用域)。无论之前是否声明,这都是不一致的。我们无法说明程序运行的分支,因为我们不知道变量携带的值。
vector <bool> bottomMap(topMap); //< MOVED HERE
for (int i = 0; i < str.size() ; i++){
if (str[i] != ' ') {
cout << "XXXX";
} else {
if (bottomMap[i] == true)
cout << "YYYY";
else
cout << "X";
}
}
///< AND NOMORE HERE
}
for (int i = 0; i < str.size() ; i++)
{
if (str[i] != ' ')
{
cout << "XXXX";
}
else
{
if (bottomMap[i] == true) //< ERROR: bottomMap here is not declared.
cout << "YYYY";
else
cout << "X";
}
}
vector <bool> bottomMap(topMap); //< Declared here, but too late!
} //< ERROR: TOO CLOSED BRACES