2

const ベクトル参照を受け取るメソッドがあります。ベクトルの変更可能なバージョンをヒープに置き、それを返したい

これはコンパイルされますが、実際に私が考えていることを行っているかどうかはわかりません。ここでの記憶に幸運があるかどうかはわかりません:

vector<Type> *vect = new vector<Type>;
*vect = vectReference;
4

4 に答える 4

2

大丈夫です。動的に割り当てられたvectorコピーを作成しました。しかし、同じことは、デフォルトのコンストラクターと代入演算子の代わりにコピー コンストラクターを使用して、より短い方法で行うことができます。

vector<Type> *vect = new vector<Type>(vectReference);

また、生のポインターの代わりにスマートポインターを使用することをお勧めします:std::unique_ptrまたはstd::shared_ptr- コードのセマンティクスによって異なります。

于 2012-09-28T07:05:02.980 に答える
1

私が理解しているように、あなたはそれを正しく行います。2 行目では、ベクトルを vectReference からヒープに割り当てられた vect にコピーします。

于 2012-09-28T07:01:44.717 に答える
1

このコードは正しく動作します。

ただし、「vect」が後で解放する必要があるスペースを確実に割り当てる必要があるため、おそらく std::auto_ptr を使用して、オブジェクトが破棄されていることを確認する必要があります。

std::auto_ptr<std::vector<Type> > vect(new std::vector<Type>);
*vect = vectReference;
于 2012-09-28T07:04:44.530 に答える
1

これはまさにあなたが望むものを実行します。次の方法で短縮することもできます。

vector<Type> *vect = new vector<Type>(vectReference);

代入演算子ではなくコピー コンストラクターを呼び出します。

于 2012-09-28T07:04:48.317 に答える