我有一個類,它包含一個用unique_ptr管理的c-style數組。我想提供一個構造函數:設置類成員unique_ptr <T[]>數組而不復制
class A {
unique_ptr<T[]> p;
public:
A(int d, X x) : p(new T[d]) {
//Transfer from x to p without copying
}
}
這樣我就可以建立我的對象的東西,如:
int main(..) {
A a{n,{expr1,expr2,..}};
}
其中{表達式1,表達式2,...}包含的值(在運行時進行評估)爲初始化。由於這個列表是暫時的,在我看來浪費資源來構建它,將它的值複製到實際的對象中並丟棄它。我相信通過移動semantincs,rvalues和C++ 11的所有漂亮功能,應該爲這個簡單的任務提供一個解決方案,但是我找不到它(我在C++中很新穎)。
我想堅持使用c風格的數組,不要移動到std :: vectors。有解決方案嗎?
你說的 「不復制」 是什麼意思?您希望堆分配使用數據成員進行初始化? – Justin
*「我想堅持使用c風格的數組,並且不要移動到std :: vectors」* [原文如此]爲什麼您不想使用該語言庫提供的功能?不這樣做就是所謂的重新發明輪子。 –
@舊版代碼,僅舉幾例。 – 2017-05-25 21:05:39