我遇到了这个术语异常安全的容器。我想了解异常安全的确切含义是什么?对于不同的容器,是否有任何比较?
问问题
93 次
1 回答
1
如果您查看各种数据结构的算法,您会发现它们涉及一系列步骤。数据结构在步骤的开始和结束时具有一定的完整性(一致的内部含义)。
例如,考虑vector
一个动态增长的数组。这通常涉及一个数组、一个描述数组大小的整数和一个描述使用元素数量的整数。当插入一个元素时,可能会分配一个两倍大小的新数组,将元素复制到新数组,描述大小的整数将乘以 2,描述已使用元素数量的整数将增加 1,等等.
此时抛出的异常(例如,由元素的复制构造函数)可能导致步骤序列在中间终止。例如,如果您不小心先更新整数,然后才进行分配和复制(并且不要捕获异常),那么数据结构将失去其内部一致性。
STL 容器的异常安全的含义是,它们保证这种终止将使数据结构保持一致状态。
于 2016-02-05T09:47:58.030 回答