STL 算法
程序员文章站
2022-07-12 17:58:30
...
一,算法的泛化过程
算法的泛型化过程,考虑的是如何将算法独立于要处理的数据结构,即如何设计一个算法,可以把它用于任何数据结构(vector,list,set,map)。要做到这一点,把要操作的数据结构的类别加以抽象化,模板提供了存储在容器中的数据类型的通用表示,迭代器提供了遍历容器中的值的通用表示,整个过程称为算法的泛型化。实现算法泛型化的关键就是使用迭代器,迭代器作为算法与容器之间的一个粘合剂。
二,遍历容器中的元素
#include <iostream>
#include <algorithm>
using namespace std;
class Func{
public:
void operator()(int x){
cout<<x<<" ";
}
};
void print(int x){
cout<<x<<" ";
}
int main(){
int nums[] = {1, 2, 3, 4, 5};
vector<int> vect(nums, nums + 5);
//使用函数指针作为参数
for_each(vect.begin(), vect.end(), print);
//使用函数对象作为参数
for_each(vect.begin(), vect.end(), Func());
return 0;
}
三,在指定的区间查找元素
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int nums[] = {1, 2, 3, 4, 5};
vector<int> vect(nums, nums + 5);
//在指定的区间查找某个元素
vector<int>::iterator iter = find(vect.begin(), vect.end(), 5);
if(iter != vect.end()){
cout<<*iter<<endl;
}
return 0;
}
四,对指定的区间进行排序
#include <iostream>
#include <algorithm>
using namespace std;
bool comp(int x, int y){
return x > y;
}
int main(){
int nums[] = {1, 2, 3, 4, 5};
vector<int> vect(nums, nums + 5);
//默认升序排序
sort(vect.begin(), vect.end());
//使用指定的函数进行排序
sort(vect.begin(), vect.end(), comp);
return 0;
}
上一篇: STL——算法
下一篇: c语言STL标准模板库(map)