gpt4 book ai didi

c++ - std::string 不将数据存储在连续内存位置的好处(C++ 11 之前)

转载 作者:IT王子 更新时间:2023-10-28 23:33:22 27 4
gpt4 key购买 nike

C++98C++03 std::string 中可以将其基础数据存储在非连续内存中.这是什么原因?这种宽松的要求可以实现哪些可能的优化?是否有任何编译器/架构实际上使用了这个?

如果你有部分字符串存储在不同的内存位置,迭代器会不会过于复杂?类也是如此,因为它需要确切地知道字符串的不同部分在哪里。

最佳答案

主要原因是字符串连接可以在不重新分配的情况下发生。我相信 STLPort 的早期版本利用了这一点。

另一个原因是可以实现写时复制甚至部分写时复制。尽管 std::string 的其他要求(尤其是 C++11 的移动语义)现在意味着这不再可能。

关于c++ - std::string 不将数据存储在连续内存位置的好处(C++ 11 之前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34156021/

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