C++ 删除动态数组C+中的单个元素+;

C++ 删除动态数组C+中的单个元素+;,c++,arrays,pointers,C++,Arrays,Pointers,我正在制作一个字符串数组,包含100个元素。我在.h文件中创建了数组: const int N = 100; typedef struct { int size = 0; string *list = new string[N]; } tStringList; 然后在.cpp文件中,我为数组实现了函数insert、search、remove和print。但是我不知道如何删除函数remove中数组pos位置的元素。我尝试了这个,但它给了我错误: void remove(tStringList

我正在制作一个字符串数组,包含100个元素。我在.h文件中创建了数组:

const int N = 100;

typedef struct {
int size = 0;
string *list = new string[N];
} tStringList;
然后在.cpp文件中,我为数组实现了函数
insert
search
remove
print
。但是我不知道如何删除函数
remove
中数组
pos
位置的元素。我尝试了这个,但它给了我错误:

void remove(tStringList & stringList, int pos){

delete stringList.list[pos];
stringList.size--;
}

如何删除动态数组中的单个元素?

您不必删除pos处的元素,您只应使用如下方式将pos后的所有元素移回:

void remove(tStringList & stringList, int pos){
    if(pos < stringList.size && pos >= 0){
        for(int i = pos; i < stringList.size - 1; i++){
            stringList.list[i] = stringList.list[i+1];
        }
        stringList.size--;
    }
}
void删除(tStringList&stringList,int pos){
如果(位置=0){
对于(int i=pos;i
这是不可能的。C++中的新的和删除的IST不推荐,使用像STD::VoCtor的容器。您需要将元素从<代码> POS + 1 直到 N>代码>到数组中的一个先前位置。另请参见。我用大小和位置检查编辑了答案。