成員函數at()
的例外情況,我不能想到由std::vector
函數引發的異常,但是由其分配器或其元素構造函數和賦值運算符引發。因此,在實現您自己的分配器時,異常中立可能是一個非常理想的保證。例如,您可以預先分配所有需要的內存,然後依靠分配器的noexcept保證傳播到其容器。是std :: vector異常中立?
C++標準是否提供std::vector<T,Alloc>
的異常中立性?
成員函數at()
的例外情況,我不能想到由std::vector
函數引發的異常,但是由其分配器或其元素構造函數和賦值運算符引發。因此,在實現您自己的分配器時,異常中立可能是一個非常理想的保證。例如,您可以預先分配所有需要的內存,然後依靠分配器的noexcept保證傳播到其容器。是std :: vector異常中立?
C++標準是否提供std::vector<T,Alloc>
的異常中立性?
除了內存分配,還有一種情況,其中vector
本身也會拋出異常:at()
成員函數。如果向量的類的構造函數和賦值運算符(這將作爲修改向量的一部分被調用)不會拋出任何異常,則保證不會拋出任何異常,並且沒有超出範圍的呼叫at()
。
有沒有涉及'operator ='的怪癖? – Yakk
載體上的'operator ='屬於「內存分配」類別。 –
「你可能會分配所有需要的內存」如果你不能這樣做呢? – Arunmu
準確定義這對於你來說意味着什麼「異常中立」 –
@Arunmu如果你不能這樣做,那麼你提前投擲。 –