gpt4 book ai didi

c++ - 节省内存的 C++ 字符串(interning、ropes、copy-on-write 等)

转载 作者:IT老高 更新时间:2023-10-28 23:12:58 27 4
gpt4 key购买 nike

我的应用程序存在内存问题,包括复制大量字符串、使用与大量哈希表中的键相同的字符串等。我正在为我的字符串寻找一个基类,以使其非常高效。

我希望:

  • 字符串实习(相同值的多个字符串使用相同的内存),
  • 写时复制(我认为这在几乎所有 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com