STD ::设置以存储其元素V.S.std :: vector



它必须取决于实现,但是使用std :: set?

是否有任何重要的内存开销

编辑:就我而言,我有一组std ::字符串,平均字符串长度为9个字母。

std::set作为二进制树实现,左右指针以及数据元素的节点也是如此。这些分配可以通过您的动态内存库函数来解决。所以是的 - 对于机器单词或三个元素,开销将是"显着"的比例/百分比(例如2 64位指针 a char很容易汇总到例如32字节... 32个字节...一个32x的开销),从系统/应用行为的角度来看,并且可能没有意义。如果您在乎,请始终按照自己的系统进行测量。

对于平均-9-char string s,总体内存使用不仅是您使用set还是vector的一个因素,而且还将是多少string的文本适合任何短弦乐 - 优化缓冲区(内部为内部)string对象;如果实现提供了这样的优化),而不是需要分配的进一步的动态内存来存储文本。

最新更新