比较两个订单无关紧要的集装箱

时间:2013-10-23 12:15:35

标签: c++ boost std c++98

我将参数作为字符串存储到命令中。我现在希望将多个参数存储在标准库或boost中的容器中。参数的顺序并不重要。

例如,对于命令LIST,以下内容是等效的:

LIST all verbose
LIST verbose all

然后,我希望能够比较两个容器,其中["all", "verbose"]["verbose", "all"]的比较为true

您建议我使用哪个容器,我该如何进行比较?

1 个答案:

答案 0 :(得分:0)

std::is_permutation(seq1_start, seq1_end, seq2_start)会做你想做的事情,而不用担心它们是如何存储的。 [适用于C ++ 11或提升]

但是,这可能是O(N^2)操作。

如果您不想在比较期间支付该价格,那么您将需要一个订购的容器。然后你可以(例如)使用std::equal(seq1_start, seq1_end, seq2_start)来比较线性时间(O(N))。