我是新手,在 C++ 中有问题。我正在创建 3D 坐标(面部每个角的 x、y 和 z,然后是 6 个面)并收到许多错误。这是我的代码:
#include <vector>
int main()
{
std::vector<int> xyzCoords = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
int x1 = 0;
int y1 = 1;
int z1 = 2;
int x2 = 3;
int y2 = 4;
int z2 = 5;
xyzCoords = {
{ x1, y1, z1, x2, y1, z1, x2, y1, z2, x1, y1, z2 },
{ x1, y2, z1, x2, y2, z1, x2, y2, z2, x1, y2, z2 },
{ x1, y2, z1, x1, y1, z1, x1, y1, z2, x1, y2, z2 },
{ x2, y2, z1, x2, y1, z1, x2, y1, z2, x2, y2, z2 },
{ x1, y2, z2, x1, y1, z2, x2, y1, z2, x2, y2, z2 },
{ x1, y2, z1, x1, y1, z1, x2, y1, z1, x2, y2, z1 }
};
return 0;
}
这是发生问题的代码。您可以看到我将 xyzCoords
定义为向量。我不确定这是否是正确的方法。我也不想单独定义 xyz123
。实现这一目标的最佳方法是什么?我应该使用列表、数组还是向量?请编写代码以了解如何执行此操作。谢谢!错误:
E0289: 没有构造函数实例 “std::vector<_Ty, _Alloc>::vector [with _Ty=int, _Alloc=std::allocator]” 与参数列表匹配
E0349: 没有运算符“=”匹配这些操作数
C2440:“正在初始化”:无法从“初始化程序列表”转换为“std::vector>”
C2679:二进制“=”:未找到采用“初始化列表”类型的右侧操作数的运算符(或没有可接受的转换)
原文由 George_E -old 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的初始化与您声明的类型不匹配。您声明一维数组,而您的初始化是二维数组。
它应该是 :
你提到了
xyz
坐标,那你为什么不做一个专门用于坐标的类,例如:无论如何,我不建议您对这个问题使用幼稚的方法,因为这将是矩阵运算密集型计算。您应该使用 BLAS / LAPACK 库或它的包装器,如 Eigen 或 Armadillo 。他们肯定要快得多。