所以我有两个不同的列表,需要协调不同的格式和结构。本质上,集合 B 需要匹配集合 A 中的内容,但我想保留集合 B 中现有项目的状态,而不是用集合 A 中的内容覆盖它们。
作为参考,列表实际上并不意味着列表。“列表”有几种不同的形式,从直接数组到映射。都使用标准迭代器来访问元素。
我通常处理的方式是这样的......
for item in listA
if listB contains item
mark item in list B as visited
else
add item to list b
for item in listB
if visited is true
continue
else
add item to removeList
for item in removeList
remove item from list B
这是可行的,并且是我能想到的唯一真正的方法。我不喜欢我必须做多少次迭代,让三个 for 循环背靠背感觉是错误的。但是,由于我使用的是迭代器,因此在检查列表时无法从列表中删除任何内容,而是必须将它们添加到第三个删除列表中。
在可能的答案中,请记住,速度和内存占用对我来说比编写代码的难易程度更重要。
我的问题真的归结为这一点 - 有没有更好的方法来做到这一点,我没有想到?
我在 C++/C FWIW 中,但我认为任何解决方案都可能与语言无关。
谢谢!