我試圖找出是否需要在下面的代碼的嘗試捕捉:任何C++ 98標準容器操作都可以拋出std :: bad_alloc嗎?
std::vector<int> values;
// ignore that this can throw std::bad_alloc
values.push_back(1);
try {
for (std::vector<int>::iterator iter = values.begin();
iter != values.end(); ++iter) {
++(*iter);
}
} catch (const std::bad_alloc&) {
// Is this needed?
}
通過C++ 1998標準看我能找到的唯一的事這暗示着這是一款23.1「集裝箱要求」子彈包含以下句子的點8:
此參數的副本用於在每個容器對象的生命週期內由這些構造函數和所有成員函數執行的任何內存分配。
我對此的解釋是,在一個容器中的任何成員函數可以調用分配,因此任何成員函數可以拋出的std :: bad_alloc的。我是過度偏執狂還是真的如此?
由於編譯器限制,您是否正在查看98標準?因爲現在是03,現在是11. – GManNickG 2012-04-19 11:56:46
@GManNickG - 是的,這是由於我針對的平臺受支持的編譯器的限制。 – 2012-04-20 07:22:02