我正在开发一个在 3D 空间中映射信息的软件。我使用一个容器来保存这些信息。我使用的容器是
QList< QList< QMap<float, QList<quint16> > > > lidardata;
它基本上是一个 2D 网格,表示一个矩形区域,其中每个单元格为 1 米 x 1 米,并且在每个单元格中,QMap包含一个表示高度的键值和一个在该高度处的四个相关值的列表。这样我可以存储五个值(高度+其他值)。我在这样的循环中插入值(rown和coln分别是行和列索引)
QList<quint16> NEWLIST;
NEWLIST << (width*100.0) << (1000.0+sens*100.0) << (quint16)(intensity*1000.0) ;
lidardata[ rown ][ coln ].insert( heightValue, NEWLIST);
在这种方法之前,我没有使用QMap<float, QList<quint16>
我使用QList<quint16>
并仅附加 5 个值。
现在的问题是:运行我的程序很快就会耗尽内存。完成第一个解决方案(QList 而不是 QMap)占用了大约 800Mb 的内存,现在它在整个数据存储过程的 75% 处耗尽(大约 1.4 Gb)。
有人可以确认使用 QMap<float, QList<quint16>
而不是 存储相同数量的信息QList<quint16>
确实需要更多的内存空间吗?
有没有人有任何限制空间的提示?如果没有任何问题,我将回到旧的解决方案。