const ベクトル参照を受け取るメソッドがあります。ベクトルの変更可能なバージョンをヒープに置き、それを返したい
これはコンパイルされますが、実際に私が考えていることを行っているかどうかはわかりません。ここでの記憶に幸運があるかどうかはわかりません:
vector<Type> *vect = new vector<Type>;
*vect = vectReference;
const ベクトル参照を受け取るメソッドがあります。ベクトルの変更可能なバージョンをヒープに置き、それを返したい
これはコンパイルされますが、実際に私が考えていることを行っているかどうかはわかりません。ここでの記憶に幸運があるかどうかはわかりません:
vector<Type> *vect = new vector<Type>;
*vect = vectReference;
大丈夫です。動的に割り当てられたvector
コピーを作成しました。しかし、同じことは、デフォルトのコンストラクターと代入演算子の代わりにコピー コンストラクターを使用して、より短い方法で行うことができます。
vector<Type> *vect = new vector<Type>(vectReference);
また、生のポインターの代わりにスマートポインターを使用することをお勧めします:std::unique_ptr
またはstd::shared_ptr
- コードのセマンティクスによって異なります。
私が理解しているように、あなたはそれを正しく行います。2 行目では、ベクトルを vectReference からヒープに割り当てられた vect にコピーします。
このコードは正しく動作します。
ただし、「vect」が後で解放する必要があるスペースを確実に割り当てる必要があるため、おそらく std::auto_ptr を使用して、オブジェクトが破棄されていることを確認する必要があります。
std::auto_ptr<std::vector<Type> > vect(new std::vector<Type>);
*vect = vectReference;
これはまさにあなたが望むものを実行します。次の方法で短縮することもできます。
vector<Type> *vect = new vector<Type>(vectReference);
代入演算子ではなくコピー コンストラクターを呼び出します。