c++ - 将 int 矩阵数组放入 C++ 对象时出现问题

标签 c++ arrays visual-c++ initialization

我需要一个变量来保存 22 对整数(网格中的位置),所以我想拥有一个矩阵数组。所以在我的头文件中是:

int points[22][2];

但是当我将以下内容放入对象的构造函数中时:

this->points = {{1,2},{2,3},...};

它说“必须是一个表达式必须是一个可修改的左值”我已经尝试使用 const 关键字并将其作为头文件中的指针,如此处所述 Expression must be a modifiable L-value

我也试过创建一个单独的二维数组然后分配它,但这也不起作用。

int points2 = {{1,2},{2,3},...};
this->points = points2;

我用惯了 Java,对 C++ 不太熟悉。有一个默认构造函数将按上述方式分配值,还有一个构造函数将矩阵作为参数。

以下确实有效:

this->point[1][1] = 4;

但这意味着我无法将另一个值作为参数传递,最终我在默认构造函数中得到了 44 行乱七八糟的代码!我打算使用一个带有 2 个整数的结构并将它们放在一个 vector 中,这看起来有点矫枉过正,这意味着我需要 22 个 vector 插入,然后我什至用手动值调用构造函数,我只是认为必须有是一个更好的方式:)

谢谢

最佳答案

由于您使用的是 C++,因此更好的选择是使用 vectorpairint

声明如下:

std::vector<std::pair<int, int> > points;

在你的构造函数中你可以在初始化时指定大小

: points(22), 

或者像这样在任何时候设置它:

points.resize(22);

您可以访问个别坐标

points[1].first = 1;
points[1].second = 44;

或与

points[1] = make_pair(1, 44);

或者您可以构建它而不必担心超过其分配的大小

points.push_back(make_pair(1, 44));

等等

关于c++ - 将 int 矩阵数组放入 C++ 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133516/

相关文章:

c++ - Windows 应用程序的堆大小

c++ - 何时在构造函数中使用 {} ()

C++分配将一维数组的一部分复制到多维数组

javascript - 如何通过数组条目的值获取其 "rank"?

c++ - 给定一个整数数组,将数组从中间拆分为两个短数组的最有效方法是什么?

c++ - 模板特化的不同编译器行为

winapi - 使用对 GlobalLock()\GlobalUnlock() 的正确方法是什么?

c++ - 在 mac osx 中反汇编 g++ 创建的可执行文件

c++ - 如何检查我的程序是否由用户以管理员身份运行(Vista/Win7,C++)

c++ - pragma pack 一个 STL 容器