2016-12-24 14 views
1

私はどのスタイルを使用すべきかcスタイルの関数とやり取りしています。ベクトルvs unique_ptrからcスタイルへの関数

私は、c関数から戻った後にベクトルにデータを格納する予定です。どちらが有利なのは何ですか?この場合

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

または

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

をあなたが呼び出したい関数のシグネチャと意味は何ですか? –

+0

fooCstyle(double配列[]、size_t sizeOfArray); – CodeSlapper

答えて

1

それは違いはありません、それはあなたが後でCPP-スタイルのコードでそのデータをどうしたいのかに依存します。あなたの例が間違っているしかし

、それは次のようになります。

​​

または

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

2つの間にパフォーマンスの違いはありますか? この例の正しい構文をありがとうございます。 – CodeSlapper

+0

ユニークなポインタは、より少ない機能で出荷されるので、より速くなります、それはほぼ通常のポインタです。 –

+2

@KamilKoczurek 'std :: make_unique (10)'は問題ありません(実際には望ましい)。 'unique_ptr'は' std :: vector'より高速ではありません。場合によっては、ベクトルがより速くなります(短いベクトルの最適化)。 –

関連する問題