📜  C++中的std :: equal()(1)

📅  最后修改于: 2023-12-03 14:39:57.436000             🧑  作者: Mango

C++中的std::equal()

概述

std::equal()是C++中的一个STL算法函数,用于判断两个区间是否相等。它的头文件是,并且遵循开放式区间协定。

语法
template<class InputIt1, class InputIt2>
bool equal(InputIt1 first1, InputIt1 last1, InputIt2 first2);

函数接受两个迭代器first1last1,它们表示用于比较的第一个范围。第三个参数first2是第二个范围的开始迭代器。

该函数的返回值为布尔值,表示两个范围是否相等。如果两个范围中的元素完全相等,则返回true,否则返回false

示例

以下是std::equal()函数的示例,它比较两个vector对象是否相等:

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

int main()
{
    std::vector<int> v1 = {1, 2, 3, 4, 5};
    std::vector<int> v2 = {1, 2, 3, 4, 6};

    bool result = std::equal(v1.begin(), v1.end(), v2.begin());

    if (result)
    {
        std::cout << "v1 == v2" << std::endl;
    }
    else
    {
        std::cout << "v1 != v2" << std::endl;
    }

    return 0;
}

输出将是:

v1 != v2
注意事项
  1. std::equal()可以用于所有符合迭代器要求的容器,例如std::list, std::deque, std::array等。
  2. 由于std::equal()是使用迭代器的==操作符进行比较的,因此两个范围的元素必须支持==操作符。
  3. 如果要比较的两个范围之间的元素类型不同,则可以使用自定义的比较函数作为第四个参数,这个函数将被用于比较元素是否相等。
总结

std::equal()是一个很有用的STL算法函数,用于比较两个范围的元素是否相等。它是通用的,可以用于各种STL容器,以及指针、数组等迭代器类型。在使用时,需要注意迭代器类型、要比较的容器是否支持==操作符,以及是否需要自定义比较函数。