2016-12-24 120 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'更快在某些情况下,向量可以更快(短向量优化)。 –