class - 类中多个值的数组赋值 : Best practice

标签 class c++11

我在类中有这个数组,我需要为其分配 9*9 数字矩阵。

class puzzle{

    int gme[9][9];
}

我知道不可能在 C++ 中使用钎焊封闭的初始化来分配数组:在这个问题中提到:c++ array assignment of multiple values

可以使用 std::copy(newgme, newgme + 3, gme); 并分配数组。

我不想这样做,因为我们需要在类外部分配数组 newgme 并将其作为参数传递给成员函数。

类中多个值的数组赋值:哪一个是最佳实践?

我想在不使用向量的情况下将值设置为这些:

                        0,0,7   ,0,0,0    ,4,0,6,
                        8,0,0   ,4,0,0    ,1,7,0,
                        0,0,0   ,3,0,0    ,9,0,5,

                        0,0,0   ,7,0,5    ,0,0,8,
                        0,0,0   ,0,0,0    ,0,0,0,
                        4,0,0   ,2,0,8    ,0,0,0,

                        7,0,4   ,0,0,3    ,0,0,0,
                        0,5,2   ,0,0,1    ,0,0,9,
                        1,0,8   ,0,0,0    ,6,0,0

最佳答案

不幸的是,std::copy不起作用,因为嵌套数组 int[9]本身是不可赋值的。有些人可能建议将多维数组别名为 int[81]但这是未定义的行为。

你最好的选择可能是使用嵌套 std::array :

std::array<std::array<int, 9>, 9> gme;

future 版本的 C++ 可能具有多维数组类型。

另一个选项是 Boost.MultiArray ,尽管它具有动态范围(因此使用动态内存分配)。

关于class - 类中多个值的数组赋值 : Best practice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22102891/

相关文章:

ruby - 为什么我不能在模块中扩展 Fixnum 类并使用它?

python - 在 Python 3 中创建一个 Account 类

powershell - 如何设置 PowerShell 类的默认输出

c++ - 如何用元组模拟 std::array<15,int &>

c++ - 是否存在太多包含路径这样的事情?

c++ - istream_iterator 遍历二进制文件中的字节

c++ - 会在 main 关闭应用程序之外的类中使用 C++ 返回 0 吗?

c++ - 在其他类中使用类类型时遇到问题

c++ - 为什么 std::unordered_map::count 上没有 `noexcept` 说明符?

c++ - 为什么在 C++ 中需要复制构造函数来声明和初始化对象?