这与我之前在Size of Qt containers: is QMap much larger than Qlist?问过的另一个问题有关。
基本上,我真的很想重新实现一个非常轻量级的容器,它允许添加项目(不管是在结尾还是在开头-不,它们不需要在内存中连续……非常像列表)。不需要其他函数,只需附加一个"count()“或"size()”函数来返回容器中元素的数量,这样我就可以遍历每个元素。
这是因为我创建了大量这样的容器,它们占用了大量的内存空间(参见我的另一个问题)。
有没有人提出过这样的挑战?我环顾了一下网络,大部分都重新实现了一个STL容器,它对我来说仍然太大了。我现在遵循的想法是以某种方式重写最简单的(forward_list) STL容器,但我不是那种功夫,但我会尝试。
谢谢您抽时间见我。
弗朗西斯科
发布于 2013-05-16 18:12:43
我认为std::vector
和容器一样轻量级。它只有恒定的开销,不会为每个元素添加任何数据。您可以see here看到,gcc的std::vector
实现占用了12个字节(在32位系统上)。你得到的不会比这个少很多。
发布于 2013-05-20 15:12:57
通过基准测试,我发现QList< WFM* >比QList< WFM >更好。
为什么是
QList< WFM > *qlist = new QList< WFM >();
WFM wfmobj;
wfmobj.fwhm2=5;
wfmobj.sens2=6;
wfmobj.fwhm=7;
wfmobj.sens=5;
wfmobj.nAmplitude=3;
qlist->append(wfmobj);
更多的内存消耗
QList< WFM* > *qlist = new QList< WFM* >();
WFM *wfmobj = new WFM();
wfmobj->fwhm2=5;
wfmobj->sens2=6;
wfmobj->fwhm=7;
wfmobj->sens=5;
wfmobj->nAmplitude=3;
qlist->append(wfmobj);
?也许我错过了什么。
https://stackoverflow.com/questions/16594128
复制