C++ - equal(比较两个vector元素)

C++标准库的std::equal函数。这个函数用于比较两个范围的元素是否相等。
在使用std::equal函数时,您需要提供两个范围的迭代器,以及一个可选的谓词函数(predicate)。函数会比较第一个范围内的元素和第二个范围内的元素是否相等。如果所有元素都相等,则返回true;否则返回false。

以下是一个使用std::equal函数的示例代码:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() 
{
    std::vector<int> vec1 {1, 2, 3, 4, 5};
    std::vector<int> vec2 {1, 2, 3, 4, 5};
    std::vector<int> vec3 {1, 2, 3, 4, 6};

    bool result1 = std::equal(vec1.begin(), vec1.end(), vec2.begin(), vec2.end());
    bool result2 = std::equal(vec1.begin(), vec1.end(), vec3.begin(), vec3.end());

    if (result1) 
    {
        std::cout << "vec1 and vec2 are equal." << std::endl;
    }
    else 
    {
        std::cout << "vec1 and vec2 are not equal." << std::endl;
    }

    if (result2) 
    {
        std::cout << "vec1 and vec3 are equal." << std::endl;
    }
    else 
    {
        std::cout << "vec1 and vec3 are not equal." << std::endl;
    }

    return 0;
}

在这个例子中,我们有三个向量:vec1,vec2和vec3。vec1和vec2包含相同的元素,而vec3在最后一个元素上有所不同。
我们使用std::equal函数来比较vec1和vec2以及vec1和vec3。结果表明vec1和vec2相等,而vec1和vec3不相等。因此,我们会得到以下输出:

vec1 and vec2 are equal.
vec1 and vec3 are not equal.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++中,可以使用以下方法对比两个vector: 1. 逐元素比较:可以使用循环遍历两个vector,并逐个比较对应位置的元素。如果所有元素都相等,则两个vector相等;否则,它们不相等。 2. 使用std::equal函数:C++标准库提供了std::equal函数,可以用于比较两个容器是否相等。该函数接受两个迭代器范围作为参数,并返回一个布尔值,表示两个范围内的元素是否相等。 3. 使用std::lexicographical_compare函数:如果需要按字典顺序比较两个vector,可以使用std::lexicographical_compare函数。该函数接受两个迭代器范围作为参数,并返回一个布尔值,表示第一个范围是否在字典顺序上小于第二个范围。 下面是一个示例代码,演示了如何使用以上方法对比两个vector: ```cpp #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> vec1 = {1, 2, 3}; std::vector<int> vec2 = {1, 2, 3}; // 方法1:逐元素比较 bool isEqual = true; if (vec1.size() == vec2.size()) { for (size_t i = 0; i < vec1.size(); i++) { if (vec1[i] != vec2[i]) { isEqual = false; break; } } } else { isEqual = false; } std::cout << "方法1:逐元素比较,结果为 " << (isEqual ? "相等" : "不相等") << std::endl; // 方法2:使用std::equal函数 bool isEqual2 = std::equal(vec1.begin(), vec1.end(), vec2.begin()); std::cout << "方法2:使用std::equal函数,结果为 " << (isEqual2 ? "相等" : "不相等") << std::endl; // 方法3:使用std::lexicographical_compare函数 bool isLess = std::lexicographical_compare(vec1.begin(), vec1.end(), vec2.begin(), vec2.end()); bool isGreater = std::lexicographical_compare(vec2.begin(), vec2.end(), vec1.begin(), vec1.end()); bool isEqual3 = !(isLess || isGreater); std::cout << "方法3:使用std::lexicographical_compare函数,结果为 " << (isEqual3 ? "相等" : "不相等") << std::endl; return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫忘输赢

莫忘输赢 - 收钱袋

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值