2016-12-24 114 views
1

當我正在與我應該使用哪種樣式的c樣式函數進行交互時。vector vs unique_ptr to c style function

我打算從c函數返回後將數據存儲在向量中。一個優於另一個有什麼優勢?

{ 
    auto test = std::make_unique<double[]>(10); 
    fooCstyle(test); 
} 

{ 
    auto test = std::vector<double>; 
    test.reserve(10); 
    fooCstyle(test); 
} 
+0

什麼是你要調用的函數的簽名和語義? –

+0

fooCstyle(double array [],size_t sizeOfArray); – CodeSlapper

回答

1

在這種情況下,它沒有什麼區別,這取決於你想與該數據後來在CPP風格的代碼做什麼。

但是你的例子是錯誤的,它應該是這樣的:

​​

std::unique_ptr<char[]> test { new char[10] }; 
cstyle(test.get()); 
+0

兩者之間是否存在性能差異? 感謝此示例的正確語法。 – CodeSlapper

+0

獨特的指針會更快,因爲它具有少功能的特點,它幾乎是正常的指針。 –

+2

@KamilKoczurek'std :: make_unique (10)'很好(實際上最好)。 'unique_ptr'不會比'std :: vector'更快在某些情況下,向量可以更快(短向量優化)。 –