我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。
我希望:
- 字符串实习(相同值的多个字符串使用相同的内存),
- 写时复制(我认为这在几乎所有 std::string 实现中都是免费的),
- 带有绳索的东西将是一个奖励(对于 O(1)-ish 连接)。
我的平台是 Linux 上的 g++(但这不太重要)。
你知道这样的图书馆吗?
最佳答案
copy-on-write (I think this comes for free in nearly all std::string implementations)
我不再相信这种情况了。当您通过迭代器修改字符串时,写时复制会导致问题:特别是,这会导致不需要的结果(即没有复制,并且两个字符串都被修改)或不必要的开销(因为迭代器不能纯粹根据指针来实现:它们在被取消引用时需要执行额外的检查)。
此外,所有现代 C++ 编译器都执行 NRVO并消除了在大多数情况下复制返回值字符串的需要。由于这是写时复制语义最常见的情况之一,由于上述缺点,它已被删除。
关于c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1116040/