gpt4 book ai didi

c++ - C++ Small String Optimized (SSO) 如何与容器一起工作?

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:57 25 4
gpt4 key购买 nike

SSO 解释说小字符串是在堆上分配的:好的,但是当在容器内部构造时,这些内容不应该在堆栈上,因为容器可以在函数中创建并返回,而函数堆栈会过时。

所以我猜 SSO 不适用于 STL 容器,是吗?

最佳答案

“小串”和“大串”的区别,并不是存储在栈上还是堆上的区别。相反,不同之处在于间接级别

这意味着 std::string 对象可以保存指向实际字符串数据的指针,它可以是(几乎)任何长度,但具有间接动态内存的所有缺点 - 分配、释放、缓存未命中等。

或者,SSO 允许 std::string 将小字符串“就地”存储,就在 std::string 对象内部,无论它被分配到哪里。如果对象位于某个容器(在堆上)中,那么字符串将位于该位置,但它不需要像大字符串那样的其他间接寻址。

关于c++ - C++ Small String Optimized (SSO) 如何与容器一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086259/

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