I ベクトルのベクトルで、それぞれが (数学的な意味で) セットを表します。例えば:
{{1, 3}, {4, 9, 14}, {1, 3}, {1, 4, 8, 9, 10, 14, 16}, {1, 3, 9}, {4, 9, 17, 22}}
別のアイテムを含むすべてのアイテムを削除するために、ベクトルをフィルタリングできる最も効率的な C++ 可能な関数を (可能であればその場で) 作成したいと考えています。
たとえば、次のとおりです。
{1, 3}
{1, 3}
とに含まれる{1, 3, 9}
{4, 9, 14}
に含まれています{1, 4, 8, 9, 10, 14, 16}
結果のベクトルは次のようになります。
{{1, 3}, {4, 9, 14}, {4, 9, 17, 22}}
私は C++ から始めているので、これを効率的に行う方法についてはまったく手がかりがありません。ここでの他の回答で、消去/削除イディオムを見つけましたが、述語としてクロージャーを消去することを除いて、ここではあまり適切ではないようです。これは、C++ ではあまり慣用的ではないようです。
元の順序を維持することは重要ではなく、各セット内の値の順序も重要ではないことに注意してください。