【发布时间】:2013-05-11 19:13:52
【问题描述】:
我正在制作一个向量数组以保存为法线。因为我们还没有学会如何在课堂上做向量,所以我制作了一个同样适用的结构:
struct vector3
{
double xcoord;
double ycoord;
double zcoord;
};
然后,在我的函数开始时,我有这个:
vector3 vector;
vector3* normalField = new vector3[x];
当函数循环通过时,在每个循环中,它会将新值应用于“向量” - 在函数结束时,它将数组的一部分设置为向量。
normalField[x] = vector;
这个想法是通过不创建一大堆新向量来节省内存,因为我不知道何时何地可以对该组向量使用删除功能。这行得通吗?或不?这样做的最佳方法是什么?
整个代码非常冗长 - 我正在编写一个算法来为程序生成的地形创建一个法线场。我不使用内置的矢量类,因为我们不应该出于某种愚蠢的原因。我责怪教授。
【问题讨论】:
-
normalField的定义是什么?更多代码会有所帮助。 -
你没有展示足够多的代码让我们理解你想要什么。你不能声明例如
std::vector<vector3> normalfield;...或者normalfield...的声明是什么? -
@BasileStarynkevitch 该操作正在使用双精度结构模拟向量,因此使用 std::vector 来拥有其中几个可能会适得其反,尤其是在作业的上下文中假设尚未教授 std::vector。
-
假设
x是您的数组的大小,您的数组将只有0到x-1的位置,所以normalField[x] = vector将超出数组。
标签: c++ arrays memory struct overwrite