stl 中常用的算法

#include 
#include 
#include 
#include 
using namespace std;



//stl -常用算法

//1.常用遍历算法
//1.1for_each 遍历容器
//1.2transform 搬运容器到另一个容器中

//for_each
//普通函数
void print(int a)
{
    cout< v;
    for (int i = 0; i <5 ; ++i) {

        v.push_back(i);
    }
    for_each(v.begin(),v.end(),print);
    cout<<"-------------------------"< v; //原容器
    for (int i = 0; i < 5; i++) {
        v.push_back(i);
    }
    vector v1; //目标容器
    v1.resize(v.size()); //目标容器需要提前开辟空间
    transform(v.begin(), v.end(), v1.begin(), Transform());
    for_each(v1.begin(),v1.end(),print1_1());
}



//2.常用查找算法
//find 查找元素
//find_if 按条件查找元素
//adjacent_find 查找相邻重复元素
//binary_search 二分查找法
//count 统计元素个数
//count_if 按条件统计元素个数


//2.1 find 查找指定元素,找到返回指定元素的迭代器件,找不到返回结束迭代器end()
//find(iterator beg,iterator end,value)



//查找内置数据类型
void test2_1()
{
    vector v;
    for (int i = 0; i <5 ; ++i) {
        v.push_back(i);
    }
    vector::iterator it=find(v.begin(),v.end(),5);
    if(it!=v.end())
    {
        cout<<"找到了该元素"<name=name;
        this->age=age;
    }

    //重载==让底层find知道如何对比person数据类型

    bool operator==(const person& p)  //当find查找自定义的数据类型的时候 需要重载==让find的底层只知道怎样取判断传入对象是否相等
    {
        if(this->name==p.name && this->age==p.age)
        {
            return true;
        } else{
            return false;
        }
    }
    int age;
    string name;
};

void test2_2()
{
    vector v;
    //创建对象
    person p1(13,"bronny");
    person p2(14,"lebron");

    v.push_back(p1);
    v.push_back(p2);

    vector::iterator it=find(v.begin(),v.end(),p2);


    if(it==v.end())
    {
        cout<<"没有找到"<

//accumulate 计算容器中的总和 最后一个值是起始累加值
//fill 向容器中填充指定的元素


//6 常用的集合算法  (同样的当有目标容器时候,需要提前开辟空间)
//set_intersection(beg1,end1,beg2,end2,iterator dest) //求两个容器的交集  dest目标容器开始的迭代器 注意:返回的是目标容器的结束位置迭代器
//交集总结:
//      1.求交集的两个集合必须是有序列的序列
//      2.目标容器开辟空间需要从两个容器中取小值
//      3.set_intersection返回值是交集中最后一个元素的位置

//set_union       //求两个容器的并集
//并集总结:
//      1.求并集的两个集合必须是有序序列
//      2.目标容器开辟空间需要包含特殊情况(没有交集)所以开辟的空间为两个容器相加
//      3.同样的set_union返回值是并集中最后一个元素的位置



//set_difference  //求两个容器的差集
//差集总结:
//       1.求差集的两个集合必须是有序序列
//       2.目标容器开辟空间需要从连个容器取最大值
//       3.set_difference返回值是差集中最后一个元素的位置



int main() {
    //test1_1();
    //test1_2();

    test2_2();
    return 0;
}

你可能感兴趣的:(c++)