私は2つのリストを持っています。
char *name[] = {"RGS", "O", "NRGY", "SIG", "BML-O", "BHI", "KSU", "ORN"};
char *name_to_remove[] = {"RGS", "O", "NRGY"};
アイテムのリストを取得して別のリストから削除する効果的な方法はありますか?私は自分のバージョンを実装しましたが、それはかなり非効率的だと思います。基本的に、名前リストのコピーを作成し、ネストされたforループを使用して、複製された名前リストとname_to_removeリストの両方を調べ、「削除」を繰り返すアイテムにマークを付けます。最後に、リストを調べて、値が「remove」のアイテムを除くすべてのアイテムをコピーします。そのひどく醜く、私は非効率的だと思います。私が問題を抱えている(以前に対処したことがない)問題は、配列がメモリ内の固定サイズである場合に配列からアイテムを削除できるかどうかわからないため、最初に変更しようとしました値を入力してから、値を新しい配列に追加します(元の配列と同じサイズ-削除するアイテムの配列のサイズ)。
私はそれを行うためのより良い方法を見つけることができません。memcmpは2つのリストを比較できるので有望であるように見えましたが、それがどのように適合するかを理解できませんでした。私はCがPythonではないことを知っていますが、Pythonでそれをきれいに行う方法は次のとおりです。
for item in name_to_remove:
name_copy.remove(item)
おそらくシーンの下で、pythonコマンドは私がしているのと同じくらい多くのループを行っていますが、私は尋ねると思いました。