gpt4 book ai didi

c++ - 如何删除结构数组的元素?

转载 作者:行者123 更新时间:2023-11-30 04:07:02 25 4
gpt4 key购买 nike

我有一个程序必须在 10 个零件箱之间进行选择。一旦用户选择了一个箱子,程序会询问您是否要添加或删除零件。我的问题是当我尝试添加或从单个箱子中删除时,它会在所有箱子中添加和删除。

struct Inventory
{
char description[35];
int num;
};

Inventory parts[Number_Bins] = {
{"Valve", 10},
{"Bearing", 5},
{"Bushing", 15},
{"Coupling", 21},
{"Flange", 7},
{"Gear", 5},
{"Gear Housing", 5},
{"Vacuum Gripper", 25},
{"Cable", 18},
{"Rod", 12}
};

这是我删除零件的功能。我有另一个要添加的部分,它是相似的。我可以为数组的每个元素创建大约 10 个这样的元素,但这不是重点。

void RemoveParts(Inventory bins[])
{
int e = 10;
int enter2;
cout << "Enter how many you want to remove\n";
cin >> enter2;
if (enter2 < 0)
{
cout << "Negative Values are not legal. Try again\n";
}
else
{
for (int index = 0; index < e; index++)
{
bins[index].num = bins[index].num - enter2;
}
}
}

我使用切换菜单来拾取任何垃圾箱。所以有10个案例。有什么方法可以使它更容易并编写更少的代码吗?

最佳答案

那是因为你正在遍历这里的所有容器:

for (int index=0; index<e; index++){     
bins[index].num = bins[index].num - enter2;
}

如果你想从某个容器中移除你必须告诉你的程序是哪个容器。

据我了解,您想删除整个垃圾箱...

为此,您必须从数组中删除该元素。

我建议使用 std::vector<Inventory> parts(Number_Bins)std::array<Inventory, 10> parts;甚至 std::list<Inventory> parts(Number_Bins) .然后进行设置。

然后删除元素将只是通过使用 remove

从您的 array 中删除具体来说,您必须移动整个数组。

//where enter2 is the element we want to erase
for (int index=enter2-1; index<total_size; index++){
bins[index] = bins[index + 1];
}
// then reinit content of last element
bins[total_size-1] = 0;

我根本不推荐这条路,它让一切变得更难,而且这感觉像是一种轻描淡写的说法。这就是为什么:

  • 现在你必须检查 Inventory 的设置项目为 0 成功地将两个变量设置为 0
  • 现在您必须跟踪 Initialized 的数量数组中的元素
  • 您还需要跟踪数组的大小

这不是C++ ,没有封装,没有 OOP,这可能会迫使你介绍 global变量,因为您必须跟踪内容。

编写不可扩展和不可维护的代码对您的现在不利,但最重要的是,对您的 future 不利。

关于c++ - 如何删除结构数组的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com