4

いくつかの標準コンテナの例外安全性を確認するためのオンラインリファレンスを見つけようとしています。

の場合 std::vector、push_back呼び出しの前の状態を保持しますか?ベクトルにはまだすべてのオブジェクトが有効であると思います(デストラクタは呼び出されません)。std::vectorpush_backが例外をスローした後、どのような保証が提供されstd::bad_allocますか?

4

1 に答える 1

7

スローされた場合、ベクトルは変更されません。でもないcapacity()

[container.requirements.general]によると:

特に指定がない限り(23.2.4.1、23.2.5.1、23.3.3.4、および23.3.6.5を参照)、この条項で定義されているすべてのコンテナタイプは、次の追加要件を満たしています。

[...]

— push_back()またはpush_front()関数によって例外がスローされた場合、その関数は効果がありません。

于 2012-01-17T18:43:23.487 に答える