我遇到这个术语异常安全的容器。我想了解究竟什么是异常安全的意思? 对于不同的容器是否有任何比较?在C++中的容器的异常安全
1
A
回答
1
如果您查看各种数据结构的算法,可以看到它们涉及一系列步骤。数据结构在步骤开始时和结束时具有一些完整性(一致的内部含义)。
例如,考虑vector
,其涉及dynamically growing array。这通常涉及一个数组,一个描述数组大小的整数,以及一个描述已使用元素数量的整数。插入一个元素时,可能会分配一个两倍大小的新数组,复制到新元素的元素,描述大小的整数将乘以2,描述已使用元素数的整数将增加1,等等
此时引发的异常(例如,通过元素的复制构造函数)可能会导致中间的步骤序列被终止。例如,如果你不小心首先更新整数,那么只有在分配和复制(并且不捕获异常)时,数据结构才会失去内部一致性。
对于STL容器,异常安全的含义是,它们保证这种终止将使数据结构保持一致的状态。
相关问题
- 1. Qt中的异常安全
- 2. 安全异常
- 3. WindowsIdentity.GetCurrent()上的安全异常
- 4. 安全异常与Thread.Abort的
- 5. ASP.NET安全异常
- 6. Ninject.MockingKernel.Moq安全异常
- 7. .net安全异常
- 8. Java安全异常
- 9. WCF安全异常
- 10. 在C++中的单个对象的线程安全的容器
- 11. WebClient.DownloadStringAsync在Silverlight中抛出安全异常
- 12. 不安全从静态链接的C++库中抛出异常?
- 13. Telerik RadTabStrip + OWASP安全异常
- 14. 安全异常错误
- 15. System.Web.Mvc.UrlHelper.GenerateUrl错误安全异常
- 16. CKEditor .Net安全异常
- 17. 是uninitialized_copy()异常安全吗?
- 18. Sharepoint 2010 SPImport.Run安全异常
- 19. std :: unique_ptr和异常安全
- 20. Sql-Clr安全异常
- 21. ,一个安全异常
- 22. 安全并抛出异常
- 23. Linq to SQL - 安全异常
- 24. 在C,通用容器还是安全容器?
- 25. 在IIS7中托管的应用程序中的安全异常
- 26. 在.net C#中不安全正常?
- 27. 部署后的Healthvault安全异常
- 28. 内存竞技场的异常安全
- 29. 提供Applet安全异常的回退
- 30. 由Directory.Delete()造成的WCF安全异常
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