C 11 中 std::string 的 COW 实现:合法性和限制
写时复制 (COW) 是一种常见的技术用于通过推迟创建新对象的成本直到实际修改该对象来提高性能。然而,有人质疑 COW 是否是在 C 11 中实现 std::string 的有效方法。
对 COW 实现的限制
根据 C 11 标准(21.4.1 p6),迭代器和引用的无效仅在特定情况下允许情况:
对于 COW 字符串实现,调用非常量运算符[] 需要制作副本并使引用无效。这是上述段落所禁止的。因此,基于 COW 实现 std::string 在 C 11 中不再被视为合法。
显式限制声明
标准没有明确声明禁止基于 COW 的 std::string 实现。但是,明确限制失效场景的要求组合隐含了该限制。
结论
虽然 COW 在早期版本中是 std::string 的可行实现C 中,C 11 规范引入了约束,由于不允许引用失效,因此禁止基于 COW 的实现。
以上是`std::string` 的写时复制实现在 C 11 中合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!