C++ STL 算法概述

原文:https://www.studytonight.com/cpp/stl/stl-overview-of-algorithms

STL 提供了不同类型的算法,可以在迭代器的帮助下在任何容器上实现。因此,现在我们不必定义复杂的算法,而是使用 STL 中算法库提供的内置函数。

如前所述,算法库提供的算法函数在迭代器上工作,而不是在容器上。因此,一个算法函数可以用于任何类型的容器。

使用 STL 的算法可以节省时间、精力和代码,并且非常可靠。

例如,为了在 C++ 中实现二分搜索,我们必须编写一个函数,例如:

bool **binary_search**( int l , int r , int key ,int a[])
{
    if(l > r)
        return -1;
    else
    {
        int mid=(l+r)/2;

        if(a[mid] == key) 
        {
            return true;
        }
        else if(a[mid] > key) 
        {
            return **binary_search**(l, mid-1, key, a);
        }
        else if(a[mid] < key) 
        {
            return **binary_search**(mid+1, r, key, a);
        }
    }
}

请注意,只有当数组由整数和字符组成时,上述函数才有效。

但是在 STL 中我们可以只使用算法库提供的binary_search()来执行二分搜索。它已经在库中定义为:

return binary_search(a, a+a.size())

此外,上述功能适用于任何类型的容器。


算法库中的算法类型

  1. 排序算法
  2. 搜索算法
  3. 非修改算法
  4. 修改算法
  5. 数字算法
  6. 最小和最大操作。