gpt4 book ai didi

c++ - 是否有用于对 vector 元素进行成对比较的标准算法?

转载 作者:太空狗 更新时间:2023-10-29 20:26:49 27 4
gpt4 key购买 nike

我基本上有两个带有无序元素的 vector ,只能检查它们是否相等。有没有像 std::equal 这样的标准算法来比较所有 n^2 对并检查一个 vector 的所有元素是否都在另一个 vector 中?

最佳答案

vector 有多大?像这样的东西:

template <typename T>
bool
unorderedEqual( std::vector<T> const& v1, std::vector<T> const& v2 )
{
return v1.size() == v2.size()
&& std::find_if(
v1.begin(), v1.end(),
[&v2]( T const& elem ) {
return std::find( v2.begin(), v2.end(), elem ) == v2.end();
} ) == v1.end();
}

可能会成功,但它是 O(n^2)(这意味着它只是好的对于非常小的 vector ),如果 vector 包含重复元素。 (另请注意,我还没有测试过,所以它可能包含拼写错误和其他错误。但它应该足够接近以给出总体思路。)

否则,我认为你必须排序;即使对象不支持小于,你应该能够定义一个订购功能。 (顺序可以随意,没有意义除了允许使用 std::sort。)

关于c++ - 是否有用于对 vector 元素进行成对比较的标准算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18487135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com