接下来我会为您详细讲解 “C++头文件algorithm中的函数功能详解”的攻略。
1. 简介
C++ STL (Standard Template Library) 库提供了很多强大的功能, algorithm 是其中的一个头文件,提供了 许多算法、排序、搜索 和数值处理功能。
2. 常用函数
2.1 排序算法
2.1.1 std::sort
template< class RandomIt>
void sort( RandomIt first, RandomIt last );
template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );
sort() 函数用于对序列进行升序排序,默认从小到大排序。比如对数组进行排序:
#include <iostream>
#include <algorithm>
int main()
{
int a[] = {2, 1, 4, 5, 3};
int n = sizeof(a)/sizeof(a[0]);
std::sort(a, a+n);
for (int i=0; i<n; i++)
std::cout << a[i] << " ";
}
输出结果为:
1 2 3 4 5
也可以通过comp函数指定排序规则:
bool cmp(int x,int y){
return x>y;
}
int main()
{
int a[] = {2, 1, 4, 5, 3};
int n = sizeof(a)/sizeof(a[0]);
std::sort(a, a+n, cmp); // 降序排序
for (int i=0; i<n; i++)
std::cout << a[i] << " ";
}
输出结果为:
5 4 3 2 1
2.1.2 std::nth_element
template< class RandomIt >
void nth_element( RandomIt first, RandomIt nth, RandomIt last );
template< class RandomIt, class Compare >
void nth_element( RandomIt first, RandomIt nth, RandomIt last, Compare comp );
std::nth_element
函数用于查找序列的第 n 个元素,并将第 n 个元素放到正确的位置,其余的元素在其原有位置。比如:
#include <iostream>
#include <algorithm>
int main()
{
int a[] = {2, 1, 4, 5, 3};
int n = sizeof(a)/sizeof(a[0]);
std::nth_element(a, a+2, a+n);
for (int i=0; i<n; i++)
std::cout << a[i] << " ";
}
输出结果为:
2 1 3 5 4
2.2 查找算法
2.2.1 std::find
template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );
std::find
函数用于在序列中查找某个元素,如果找到了则返回该元素所在的位置(迭代器),否则返回末尾迭代器。比如:
#include <iostream>
#include <algorithm>
int main()
{
int a[] = {2, 1, 4, 5, 3};
int n = sizeof(a)/sizeof(a[0]);
int* p;
p = std::find(a, a+n, 4);
if (p != a+n)
std::cout << "find 4 at position " << (p-a+1) << "\n";
else
std::cout << "4 not found\n";
}
输出结果为:
find 4 at position 3
2.2.2 std::binary_search
template< class ForwardIt, class T >
bool binary_search( ForwardIt first, ForwardIt last, const T& value );
template< class ForwardIt, class T, class Compare >
bool binary_search( ForwardIt first, ForwardIt last, const T& value, Compare comp );
std::binary_search
函数用于在有序序列中查找某个元素,如果找到了则返回 true,否则返回 false。比如:
#include <iostream>
#include <algorithm>
int main()
{
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a)/sizeof(a[0]);
if (std::binary_search(a, a+n, 4))
std::cout << "4 found\n";
else
std::cout << "4 not found\n";
}
输出结果为:
4 found
3. 总结
以上就是本篇攻略的全部内容,介绍了一些 algorithm 头文件中的常用函数,其中包括了排序算法和查找算法两个方面。相信通过本篇攻略,您已经了解了 algorithm 头文件的相关知识,并且能够熟练使用其提供的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++头文件algorithm中的函数功能详解 - Python技术站