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++ 中似乎并不习惯。
请注意,保持原始顺序无关紧要,每个集合中值的顺序也无关紧要。