我有两个清单。
char *name[] = {"RGS", "O", "NRGY", "SIG", "BML-O", "BHI", "KSU", "ORN"};
char *name_to_remove[] = {"RGS", "O", "NRGY"};
有没有一种有效的方法来获取项目列表并将其从另一个列表中删除?我已经实现了自己的版本,但我认为它的效率很低。它基本上是复制名称列表,然后使用嵌套的 for 循环遍历重复的名称和 name_to_remove 列表并将任何重复的项目标记为“删除”。最后,我浏览列表并复制所有项目,但值为“删除”的项目除外。它非常丑陋,我怀疑效率低下。我遇到的一个问题(以前没有处理过)是我不确定如果数组在内存中的大小是固定的,是否可以从数组中删除一个项目,所以我最初试图改变值,然后将值添加到新数组中(与原始数组大小相同 - 我要删除的项目数组的大小)。
我看不到更好的方法,memcmp 似乎很有希望,因为它可以比较两个列表,但我无法弄清楚它是如何适合的。我知道 C 不是 python,但这是我在 python 中干净利落的方法:
for item in name_to_remove:
name_copy.remove(item)
也许在幕后,python 命令正在执行与我一样多的循环,但我想我会问。