我正在将一些代码从c迁移到c ++。

我已经将一些用于结构内存分配的malloc调用更改为new调用。

基本上,在我要移植的代码之前,是对包含多组框架坐标的数组进行malloc分配,每组数组的长度为几十万个浮点数-因此数组的总长度可能为数千万个坐标。

我应该使用哪种结构/容器?

我需要哪种保护措施来捕获与内存相关的错误?



编辑1
我已对问题进行了重新命名/措辞,以便更准确地反映我要尝试做的事情。

我认为某种2D列表状结构可以解决问题……可能是std :: deque的std :: deque?

最佳答案

答案是std::vector

实际上,您不需要那么多的内存(或者您有一些受内存限制的平台,我想在这种情况下您会告诉我们的)。 Vector非常适合此目的。而且您不必自己管理内存。

如果要一次管理多个向量,则可以使用向量向量。

但是如今,一些10 ^ 6s的浮动绝对不是什么大问题。

更新:如果您使用deque,还有一件事。请不要按循环索引访问deque对象。实际上,deque擅长在两侧插入,但不擅长通过索引访问对象。正如我在此处看到的那样,可能不是在中间插入对象。

关于c++ - 如何最好地在C++中存储非常大的2D浮点列表?错误处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3737138/

10-13 05:05