C++ 如何覆盖以前的数组值
我正在尝试编写一个函数(方法?) 重置此阵列的步骤:C++ 如何覆盖以前的数组值,c++,C++,我正在尝试编写一个函数(方法?) 重置此阵列的步骤: string squares[25] = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14",
string squares[25] = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14"," 15","16","17","18","19"," 20","21","22","23","24"," 25"};
更改后,调用时返回其原始值
void clearSquares()
{
string squares[25] = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14"," 15","16","17","18","19"," 20","21","22","23","24"," 25"};
}
但当调用它时,值保持不变。我如何解决这个问题?还是有其他更优雅的方法来重置原始数组值
ps:数字是紫色的字符串您有两个变量;一个全局和一个本地到
清除方块
。它们之间没有任何关系。由于无法分配给数组,因此避免使用本地数组也无济于事 但您只需要一个函数,用于初始设置和清除 差不多
void resetSquares()
{
int i = 1;
for (auto& x: squares)
{
x = std::to_string(i);
i++;
}
}
正如评论者所指出的,您正在创建一个局部变量并对其进行修改 你可能想做点什么
#包括
#包括
std::vector createSquares(){
std::向量s;
for(size_t i=1;isquares
是函数中的局部变量,它会遮挡全局变量,因此您永远看不到全局变量的任何更改。您可以使用std::copy()
来解决此问题。请显示a。这比描述代码的功能(或应该执行的功能)更容易理解。即使两个变量的名称相同,但它们是不同的。因此,修改其中一个显然不会影响另一个。顺便说一句,您应该动态创建这些字符串。1,2,3,4…我看到了一种模式,正常循环在这里就可以了,有点重复使用I
。
void resetSquares()
{
int i = 1;
for (auto& x: squares)
{
x = std::to_string(i);
i++;
}
}