我的应用程序存在内存问题,包括复制大量字符串,使用与许多哈希表中的键相同的字符串等。我正在为我的字符串寻找基类,这使得它非常有效。
我希望:
我的平台是Linux上的g ++(但这不太重要)。
你知道这样的图书馆吗?
答案 0 :(得分:9)
copy-on-write(我认为这几乎在所有std :: string实现中都是免费的)
我不相信这种情况。通过迭代器修改字符串时,写时复制会导致问题:特别是,这会导致不需要的结果(即没有复制,两个字符串都被修改)或不必要的开销(因为迭代器不能纯粹根据指针实现) :他们需要在解除引用时执行额外的检查。)
此外,所有现代C ++编译器都执行NRVO,并且在大多数情况下无需复制返回值字符串。由于这是写时复制语义最常见的情况之一,因此由于上述缺点而被删除。
答案 1 :(得分:6)
如果您的大部分字符串都是不可变的,Boost Flyweight库可能符合您的需求。
它将执行字符串实习,但我不相信它会写入写入。
答案 2 :(得分:5)
Andrei Alexandrescu的'Policy Based basic_string implementation'可能有帮助。
答案 3 :(得分:2)
看看传奇人物Paul Hsieh的The Better String Library