2017-06-06 44 views
0

直到C++ 11,我認爲std::vector<T>需要T爲基本操作CopyAssignable和CopyConstructible(擴展容量需要將對象複製到另一個內存位置)。但如果你做v1 = v0,我認爲它會真正複製這些值。什麼是不需要CopyAssignable/CopyConstructible的標準容器?

是否有任何標準容器不需要它們的任何功能value_type是可分配和可複製的?

要說它,否則,我有一個類型是不可複製/分配的,哪些容器可安全地使用可移植性和在多大程度上?

回答

1

cppreference.com

所上的元素強加的要求取決於容器進行的實際操作。一般來說,要求元素類型是完整類型並且符合Erasable的要求,但是許多成員函數會施加更嚴格的要求。

值得注意的是std::vector<std::unique_ptr<T>>(對於一些完整的T)是一個非CopyAssignable/non-CopyConstructible容器。

+0

它實際上並沒有:我有一個刪除拷貝構造函數的類,並且相同的代碼可以很好地用g ++ 6/7工作,但是不能用g ++ 5.4。可能因爲副本已被移動取代。 –

相關問題