当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《std::string没有将数据存储在连续的内存位置的好处(在C++11之前)》经验,为你挑选了1个好方法。

In C++98并且C++03 std::string可能已将其底层数据存储在非连续内存中.这是什么原因?这个宽松的要求可以实现哪些可能的优化?有没有任何编译器/架构实际使用它?

如果你将字符串的一部分存储在不同的内存位置,那么迭代器不会过于复杂吗?这个类也是如此,因为它需要准确知道字符串的不同部分在哪里.



1> Bathsheba..:

主要原因是字符串连接可以在没有重新分配的情况下进行.我相信早期版本的STLPort利用了它.

另一个原因是可以实现写时复制或甚至部分写时复制.虽然其他要求std::string(特别是C++ 11的移动语义)现在意味着这已不再可能.


@bolov:对于也不使用连续内存的`std :: deque`,迭代器并不过分复杂
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有