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())
此外,上述功能适用于任何类型的容器。
算法库中的算法类型
- 排序算法
- 搜索算法
- 非修改算法
- 修改算法
- 数字算法
- 最小和最大操作。