Qt容器的大小:QMap比Qlist大得多吗?

时间:2013-05-13 18:09:15

标签: qt size containers qmap


我正在开发一种在3D空间中映射信息的软件。我使用容器来保存这些信息。我使用的容器是

 QList< QList< QMap<float, QList<quint16> > > > lidardata;

它基本上是一个2D网格,表示每个单元格为1米x 1米的矩形区域,并且在每个单元格中 QMap 包含表示高度的键值和四个相关值的列表at那个高度。这样我可以存储五个值(高度+其他值)。我在这样的循环中插入值( 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>存储相同数量的信息会在内存中占用更多空间吗?

有没有人有任何限制空间的提示?如果什么都没有,我会回到原来的解决方案。

1 个答案:

答案 0 :(得分:1)

如评论中所述:

您的代码可能会受到Primitive Obsession.

的影响

尝试使用本教程中所述的ValueObject修复解决您的问题:创建一个包含所有需要的属性的类,并处理此类的实例,而不是维护嵌套的QlistQMap