宿題の一部としてカスタムベクトルクラスを作成しています。私が現在やろうとしているのは、eraseという関数を実装することです。この関数は、引数として整数を取り、配列の長さを1減らし、引数で指定された位置の要素を削除し、最後にすべての要素を下にシフトして塗りつぶします。 「消去された」要素によって残されたギャップ。
この言語の経験が不足しているために私が完全に理解していないのは、ポインターの配列から単一の要素を削除する方法です。
現在、私は以下を実装しています:
void myvector::erase(int i)
{
if(i != max_size)
{
for(int x = i; x < max_size; x++)
{
vec_array[x] = vec_array[x+1];
}
vec_size --;
//delete element from vector;
}
else
//delete element from vector
}
クラス宣言とコンストラクターは次のようになります。
template <typename T>
class myvector
{
private:
T *vec_array;
int vec_size;
int max_size;
bool is_empty;
public:
myvector::myvector(int max_size_input)
{
max_size = max_size_input;
vec_array = new T[max_size];
vec_size = 0;
}
私は以下を試しました:
削除を使用して要素を削除しようとします
vec_size[max_size]を削除します;
vec_size [max_size] = NULL;
要素の値をNULLまたは0に設定する
vec_size [max_size] = NULL
また
vec_size[max_size] = 0
演算子"="があいまいであるか、指定されたタイプをvoid *にキャストできないため、いずれも機能していません。
私はおそらく単純なものを見逃しているかもしれませんが、私はこれを通過することができないようです。どんな助けでも大歓迎です。繰り返しになりますが、これがばかげている場合は、経験不足で申し訳ありません。