unique_ptr
のrelease()
のアナログがstd::vector<>
の場合、私は自分自身を見つけました。例:なぜstd :: vectorにリリースメソッドがないのですか?
std::vector<int> v(SOME_SIZE);
//.. performing operations on v
int* data = v.release(); // v.size() is now 0 and the ownership of the internal array is released
functionUsingAndInternallyDeletingRowPointer(data);
このような可能性がある特定の理由はありますか?それはstd::vector
の内部実装にいくつかの制約を課すことがありますか?
これを達成する方法がありますか、私は恥ずかしがっていないのですか?
なぜでしょうか?そんなことがあると思うなら、おそらくC++委員会にロビーを立てるかもしれない。彼らは通常、コア容器に無意味なフリルを追加することに反対していることを覚えておいてください。単純に 'std :: vector'オブジェクトを削除して再作成しないのはなぜですか?私はあなたが 'release'を実装することがきわめて重要でないことが分かると思います。 – tadman
あなたの例はあまりにも単純すぎます。あなたはどのデストラクタを呼び出すべきかをどのように知っていますか?あなたは正しいアロケータをどのように見つけますか? –
@Kerrek SBはい、私はこのような種類の問題を考えていましたが、その点を正確に見ることはできません。 'std :: vector'は簡単な' delete [] 'ができないように破壊を扱いますか? –