我有一个这样的结构:
struct m_doc{
char id[30];
int ISBN[30];
char title[50];
char author[50];
int year[30];
};
当我尝试使用删除运算符删除其中的元素时,发生了这种情况:
if (doc.id[i] == doc.id[j])
delete[] doc.author[j], doc.id[j], doc.ISBN[j], doc.title[j], doc.year[j];//expression must have pointer type
错误只出现在doc.author的文档上,其他都没有问题。
最佳答案
以这种方式声明的数组在超出范围时会自动删除。 您只需删除这样声明的数组:
int* array = new int[30];
//Do work
delete[] array;
不过,您应该更喜欢 std::vector
而不是后一种数组样式和 std::array
而不是您在代码中使用的数组。它更不容易出错。
在您的情况下(几乎总是如此),std::vector
是最合适的数据类型。然后你可以做这样的事情:
if (doc.id[i] == doc.id[j]) {
doc.author.erase(doc.author.begin() + j);
//and so on
}
关于c++ - 使用 delete 运算符删除结构中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274970/