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中文網其他相關文章!