我正在创建一个自定义矢量类作为家庭作业的一部分。我目前正在尝试做的是实现一个名为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;
}
我尝试了以下方法:
使用 delete 尝试删除元素
删除 vec_size[max_size];
vec_size[max_size] = NULL;
将元素的值设置为 NULL 或 0
vec_size[max_size] = NULL
或者
vec_size[max_size] = 0
由于运算符“=”不明确或指定类型无法转换为 void *,因此这些都不适合我。
我可能错过了一些简单的东西,但我似乎无法通过这个。任何帮助将非常感激。再次,如果这是愚蠢的事情,很抱歉缺乏经验。