我正在尝试创建一个函数,它从结构数组中删除一行,我给函数我要删除的行的索引和结构数组。例如。我们有结构数组:
Structure
{
string First;
string Second;
string Third;
string Fourth;
string Fifth;
}
结构数组:
Structure A[100];
int n;
因此,此结构数组中有五个字符串类型元素:
A[i].First A[i].Second A[i].Fourth A[i].Fifth // i is the index
我们的功能是这样的:
void Delete(Structure A[], int index, int & n)
{
Structure t;
for (int i = index; i < n-1; i++)
{
t = A[i];
A[i] = A[i + 1];
A[i + 1] = t;
n--;
}
}
所以我给函数索引,我希望函数删除我的结构数组的所有元素与该索引(所以我怎么能像这些元素的整个“行”一样,而不是逐个删除它们?)< / p>
A[index].First A[index].Second A[index].Third A[index].Fourth A[index].Fifth
但该功能不起作用。你能给我一些提示/建议/建议吗?提前谢谢。
答案 0 :(得分:1)
在第一级,您的问题基本上是:如何从使用大小存储在外部变量中的数组中删除一行(在此处作为n
传递)
你的功能的签名是正确的,实现不是。它应该是:
void Delete(Structure A[], int index, int & n)
{
// eventually control index >= 0 and index < n...
n -= 1;
for (int i = index; i < n; i++)
{
A[i] = A[i + 1];
}
}
如果您有最新版本的C ++支持移动语义,您可以通过移动字符串而不是复制字符串来加快操作:
n -= 1;
for (int i = index; i < n; i++)
{
A[i] = std::move(A[i + 1]);
}