Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我将参数作为字符串存储到命令中。我现在希望将多个参数存储在标准库或 boost 的容器中。参数的顺序并不重要。
例如对于命令 LIST,以下是等效的:
LIST all verbose LIST verbose all
然后我希望能够比较两个容器,其中 和 的["all", "verbose"]比较["verbose", "all"]给出true.
["all", "verbose"]
["verbose", "all"]
true
你会推荐我使用什么容器,我应该如何进行比较?
std::is_permutation(seq1_start, seq1_end, seq2_start)会做你想做的事,而不用担心它们是如何存储的。[在 C++11 或 boost 中可用]
std::is_permutation(seq1_start, seq1_end, seq2_start)
但是,这可能是一项O(N^2)操作。
O(N^2)
如果您不想在比较期间支付该价格,那么您将需要一个订购的容器。然后,您可以(例如)使用std::equal(seq1_start, seq1_end, seq2_start)线性时间(O(N))进行比较。
std::equal(seq1_start, seq1_end, seq2_start)
O(N)