c++ - C++ 中的数组和覆盖 - 我可以重用同一个对象吗?

标签 c++ arrays memory struct overwrite

我正在制作一个 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/

相关文章:

c - 使用快速排序对字符数组进行排序

php - PHP 中 "associate"和 "indexed"数组之间的实际区别是什么?

pointers - 64 位英特尔(和非英特尔)处理器中的分段

c++ - 负数在 C/C++ 中返回 false 吗?

C++ STL 集合或链表

c++ - 递归搜索 n 叉树中的元素

arrays - Julia:我可以在 for 循环的迭代中更新和存储相同的数组吗?

memory - Elasticsearch内存问题-ES进程占用所有RAM

android - Android中每个进程需要2MB内存?

c++ - 结束此 void 指针的最佳方法是什么?