-2
resize
関数に前のベクトルの要素を含めるにはどうすればよいですか?これは基本的にvector
を模倣しており、私はpush_back
とpop_back
の機能を作成しました。サイズ変更関数に前のベクトルの要素を含めるにはどうすればよいですか?
私はまた、サイズを倍にするresize
関数と、サイズの1/2になるresize
関数を作成しました。直前のベクトルの要素をサイズ変更されたベクトルに含めることは可能ですか?
私の作成した機能は、resize
,push_back
,pop_off
、およびcopy
です。私はresize
関数内の以前のベクトル要素をコピーすることができましたが、その他の要素はすべて-192828272
のようになりました。したがって、現在は要素をゼロに設定しています。
以下の機能を参照してください。
//1/2 the array size
template <class T>
T SimpleVector<T>::resizeDwn(){
// decrease the size
arraySize /= 2;
// Allocate memory for the array.
aptr = new T [arraySize];
if (aptr == 0)
memError();
// Set the elements to zero
for (int count = 0; count < arraySize; count++){
aptr[count] = 0;
}
// Return the array
return *aptr;
}
//Double the array size
template <class T>
T SimpleVector<T>::resizeUp(){
// Increase the size
arraySize *= 2;
// Allocate memory for the array.
aptr = new T [arraySize];
if (aptr == 0)
memError();
// Set the elements to zero
for (int count = 0; count < arraySize; count++){
aptr[count] = 0;
}
return *aptr;
}
この大規模なファイルをダンプすることが重要だと思うのはなぜですか?あなたの質問はサイズ変更と関連しているだけで、クラスの無関係なすべてのメソッドの詳細を示していますか?あなたはあなたの質問を編集し、無関係なすべてのフィラーを削除し、関連する部分だけを残す必要があります。 –
コンストラクタが例外をスローした場合、なぜプログラムをシャットダウンしていますか( 'memError'関数)? [これを読む](http://stackoverflow.com/questions/22843189/exit-call-inside-a-function-which-should-return-a-reference/22843464#22843464)。代入演算子もありません。 – PaulMcKenzie
あなたのresize()関数に関しては、古い配列をどこで削除するのですか?典型的な 'vector'クラスには、アクセス可能な要素の実際の数と、resize()メソッドを呼び出す前に追加できる要素の最大数を決定する「容量」の2つの「サイズ」があります。あなたのベクトルクラスはこれを欠くので、メモリリークの原因に加えて非常に非効率的です。 – PaulMcKenzie