Library implementers and clients can use these guarantees when reasoning about exception handling correctness.
The exception safety levels apply equally to other languages and error-handling mechanisms.
Higher levels of safety can sometimes be difficult to achieve, and might incur an overhead due to extra copying.
Several languages have constructs that simplify this, notably using the dispose pattern, named as using, with, or try-with-resources.
When an item x is added to a vector v, the vector must actually add x to the internal list of objects and update a count field that says how many objects are in v. It may also need to allocate new memory if the existing capacity isn't sufficient.