它必须取决于实现,但是使用std :: set?
是否有任何重要的内存开销编辑:就我而言,我有一组std ::字符串,平均字符串长度为9个字母。
std::set
作为二进制树实现,左右指针以及数据元素的节点也是如此。这些分配可以通过您的动态内存库函数来解决。所以是的 - 对于机器单词或三个元素,开销将是"显着"的比例/百分比(例如2 64位指针 a char
很容易汇总到例如32字节... 32个字节...一个32x的开销),从系统/应用行为的角度来看,并且可能没有意义。如果您在乎,请始终按照自己的系统进行测量。
对于平均-9-char string
s,总体内存使用不仅是您使用set
还是vector
的一个因素,而且还将是多少string
的文本适合任何短弦乐 - 优化缓冲区(内部为内部)string
对象;如果实现提供了这样的优化),而不是需要分配的进一步的动态内存来存储文本。