1

そのため、調整が必要な形式と構造が異なる 2 つの異なるリストがあります。基本的に、セット 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

これは機能し、私が考えることができる唯一の実際の方法です。ただし、3 つの for ループを連続して実行するのは間違っているように感じます。ただし、イテレータを使用しているため、リストをチェックしている間はリストから何も削除できず、代わりに 3 番目の削除リストに追加する必要があります。

潜在的な回答では、コードを書くのがいかに簡単かよりも、速度とメモリのフットプリントが重要であることに注意してください。

私の質問は本当にこれに要約されます-私が考えていないこれを行うためのより良い方法はありますか?

私は C++/C FWIW を使用していますが、どのソリューションもおそらく言語に依存しないと思います。

ありがとう!

4

1 に答える 1