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;i
squares
是函数中的局部变量,它会遮挡全局变量,因此您永远看不到全局变量的任何更改。您可以使用
std::copy()
来解决此问题。请显示a。这比描述代码的功能(或应该执行的功能)更容易理解。即使两个变量的名称相同,但它们是不同的。因此,修改其中一个显然不会影响另一个。顺便说一句,您应该动态创建这些字符串。1,2,3,4…我看到了一种模式,正常循环在这里就可以了,有点重复使用
I
void resetSquares()
{
    int i = 1;
    for (auto& x: squares)
    {
        x = std::to_string(i);
        i++;
    }
}