如何删除结构数组的元素
How to delete element of an array of structs?
我有一个程序,它必须在10箱零件之间做出选择。一旦用户选择了一个bin,程序就会询问您是要添加还是删除部分。我的问题是,当我试图添加或从单个箱中删除它添加和从所有箱中删除。
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 removen";
cin >> enter2;
if (enter2 < 0)
{
cout << "Negative Values are not legal. Try againn";
}
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;
}
如果你想从某个bin中删除,你必须告诉你的程序是哪个。
根据我的理解,你想要删除整个bin…
要做到这一点,你必须从数组中删除元素。
我建议使用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
变量,因为您必须跟踪内容。
编写不可伸缩和不可维护的代码对你的现在有害,但最重要的是,对你的未来有害。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组