gpt4 book ai didi

c - 有没有一种简单的方法可以从数组中删除项目?

转载 作者:行者123 更新时间:2023-12-04 18:20:01 25 4
gpt4 key购买 nike

我有两个 list 。

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 命令正在执行与我一样多的循环,但我想我会问。

最佳答案

答案是使用适当的数据结构。 Python 列表绝对不是作为纯 C 字符串数组实现的(只是因为您可以在 Python 列表中存储不同类型的对象)。因此,您要查找的数据结构可能是 linked listhash table .

关于c - 有没有一种简单的方法可以从数组中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867458/

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