首页 > 后端开发 > C++ > std::string 的写时复制实现在 C 11 中合法吗?

std::string 的写时复制实现在 C 11 中合法吗?

Susan Sarandon
发布: 2024-12-25 14:32:11
原创
241 人浏览过

Is Copy-on-Write Implementation of std::string Legal in C  11?

C 11 中 COW std::string 实现的合法性

在早期版本的 C 中,写时复制 (COW) 是std::string 的可行实施策略。然而,人们对其在 C 11 中的有效性提出了担忧。本文研究了 C 11 中基于 COW 的 std::string 实现的合法性。

问题: C 11 是否明确禁止基于 COW 的 std::string 实现?

答案: 不,C 11 没有明确规定禁止基于 COW 的实现。

问题:如果没有,这个限制是如何隐含的?

答案:该限制源于 C 11 中有关迭代器和引用失效的新要求。根据标准第 21.4.1 p6 节,仅在特定情况下允许无效:

  • 作为参数传递给接受非常量 basic_string 引用的特定标准库函数。
  • 调用非常量成员函数,不包括operator[]、at、front、back、begin、rbegin、end 和rend.

在 COW 字符串实现中,调用非常量运算符 [] 将需要复制和引用失效。然而,上述段落禁止这样做。因此,C 11 中不再允许使用 COW std::string 实现。

以上是std::string 的写时复制实现在 C 11 中合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板