我正在制作一个 vector 数组以保存为法线。因为我们还没有在类里面学习如何做 vector ,所以我制作了一个同样适用的结构:
struct vector3
{
double xcoord;
double ycoord;
double zcoord;
};
然后,在我的函数开始时,我有这个:
vector3 vector;
vector3* normalField = new vector3[x];
当函数循环时,在每个循环中,它将新值应用于“vector ”——在函数结束时,它将数组的一部分设置为 vector 。
normalField[x] = vector;
我的想法是通过不创建一大堆新 vector 来节省内存,而且因为我不知道何时何地可以对该组 vector 使用删除功能。这行得通吗?或不?这样做的最佳方法是什么?
整个代码非常冗长 - 我正在编写一个算法来为程序生成的地形创建一个法线场。我不使用内置的 vector 类,因为出于某些愚蠢的原因我们不应该这样做。我责怪教授。
最佳答案
赋值 normalField[x] = vector 将深度复制 vector 中的数据;您将创建与 normalField[] 中的元素一样多的 vector 。
还要记住,在 C++ 中,结构和类之间的唯一区别是,在结构中,数据成员和函数默认是公共(public)的,但在类中,它们默认是私有(private)的。
关于c++ - C++ 中的数组和覆盖 - 我可以重用同一个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595142/