欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}