我遇到這個術語異常安全的容器。我想了解究竟什麼是異常安全的意思? 對於不同的容器是否有任何比較?在C++中的容器的異常安全
1
A
回答
1
如果您查看各種數據結構的算法,可以看到它們涉及一系列步驟。數據結構在步驟開始時和結束時具有一些完整性(一致的內部含義)。
例如,考慮vector
,其涉及dynamically growing array。這通常涉及一個數組,一個描述數組大小的整數,以及一個描述已使用元素數量的整數。插入一個元素時,可能會分配一個兩倍大小的新數組,複製到新元素的元素,描述大小的整數將乘以2,描述已使用元素數的整數將增加1,等等
此時引發的異常(例如,通過元素的複製構造函數)可能會導致中間的步驟序列被終止。例如,如果你不小心首先更新整數,那麼只有在分配和複製(並且不捕獲異常)時,數據結構纔會失去內部一致性。
對於STL容器,異常安全的含義是,它們保證這種終止將使數據結構保持一致的狀態。
相關問題
- 1. C++迭代器異常安全
- 2. C++ unordered_map異常安全
- 3. MVC3中的安全異常
- 4. Qt中的異常安全
- 5. asp.net中的安全異常
- 6. 安全異常
- 7. WindowsIdentity.GetCurrent()上的安全異常
- 8. 安全異常與Thread.Abort的
- 9. .net安全異常
- 10. ASP.NET安全異常
- 11. WCF安全異常
- 12. javax.security.auth.login.LoginException:安全異常
- 13. Java安全異常
- 14. OLEDB安全異常
- 15. Ninject.MockingKernel.Moq安全異常
- 16. 在C++中的單個對象的線程安全的容器
- 17. Azure雲服務中的安全異常
- 18. WebClient.DownloadStringAsync在Silverlight中拋出安全異常
- 19. Sharepoint事件接收器安全異常
- 20. Java安全管理器異常
- 21. Windows 2003服務器上的WCF服務中的安全異常
- 22. 不安全從靜態鏈接的C++庫中拋出異常?
- 23. C++常量安全
- 24. Sharepoint 2010 SPImport.Run安全異常
- 25. ,一個安全異常
- 26. Linq to SQL - 安全異常
- 27. System.Web.Mvc.UrlHelper.GenerateUrl錯誤安全異常
- 28. 1and1安全異常問題
- 29. 異常安全和make_unique
- 30. std :: unique_ptr和異常安全
https://en.wikipedia.org/wiki/Exception_safety –
有很多關於異常安全的資源。通常我們談論[*安全級別](https://en.wikipedia.org/wiki/Exception_safety)。高級專家如[Herb Sutter](http://www.gotw.ca/gotw/059.htm)已經寫了關於如何實現這一點的文章。 – BoBTFish
我瞭解現在的異常安全及其三種規範形式。但是,容器的異常安全是什麼意思?這是否意味着即使容器可以拋出異常? – Barry