c++STL之常用查找算法

引入#include<algorithm>

算法简介:

  • find:查找元素
  • find_if:按条件查找
  • adjacent_find:查找相邻房重复的元素
  • binary_search:二分查找
  • count:统计元素个数
  • count_if:按条件统计元素个数

1.find

#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <string>

//常用查找算法
find

查找 内置数据类型
void test01()
{
    vector<int>v;
    for (int i = 0; i < 10; i++)
    {
        v.push_back(i);
    }

    查找 容器中 是否有 5 这个元素
    vector<int>::iterator it = find(v.begin(),v.end(),5);
    if (it == v.end())
    {
        cout << "没有找到!" << endl;
    }
    else
    {
        cout << 找到: " << *it << endl;
    }
}


class Person
{
public:
    Person(string name,int age)
    {
        this->m_Name = name;
        this->m_Age = age;
    }

    重载 ==  底层find知道如何对比person数据类型
    bool operator==( const Person & p)
    {
        if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
        {
            return true;
        }
        
        {
            false;
        }
    }
    string m_Name;
     m_Age;
};

查找 自定义数据类型
 test02()
{
    vector<Person>创建数据
    Person p1(aaa",1)">10);
    Person p2(bbb20);
    Person p3(ccc30);
    Person p4(ddd40);

    放入到容器中
    v.push_back(p1);
    v.push_back(p2);
    v.push_back(p3);
    v.push_back(p4);

    Person pp();

    vector<Person>::iterator it = find(v.begin(),pp);
    没有找到找到元素  姓名:" << it->m_Name <<  年龄: " << it->m_Age << endl;
    }
}

 main() {

    test01();

    test02();

    system(pause"return 0;
}

2.find_if

#include<iostream>
string>
常用查找算法 find_if

1、查找内置数据类型
 GreaterFive
{
:
    operator()( val)
    {
        return val > ;
    }
};

)
    {
        v.push_back(i);
    }

    vector<int>::iterator it = find_if(v.begin(),GreaterFive());

    找到大于5的数字为:  endl;
    }

}

2、查找自定义数据类型
 age;
    }
     Greater20
{
operator()(Person &p)
    {
        return  p.m_Age > v;

    );

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

    找年龄大于20的人
    vector<Person>::iterator it =找到姓名: ;
}

3.adjacent_find

#include<iostream>

#include <algorithm>

常用查找算法 adjacent_find
v;
    v.push_back();
    v.push_back(2314);

    vector<int>::iterator  pos = adjacent_find(v.begin(),v.end());
 
    if (pos ==未找到相邻重复元素找到相邻重复元素:" << *pos << main() {

    test01();

    system(;
}

4.binary_search

#include<iostream>
常用查找算法 binary_search
)
    {
        v.push_back(i);
    }
    v.push_back(2);  如果是无序序列,结果未知!
    查找容器中是否有9 元素
    注意:容器必须是有序的序列
    bool ret = binary_search(v.begin(),1)">9if (ret)
    {
        cout << 找到了元素未找到;
}

5.count

#include<iostream>
常用查找算法_count

1、统计内置数据类型

v;

    v.push_back(int num = count(v.begin(),1)">);

    cout << 40的元素个数为: " << num << endl;
}

2、统计自定义数据类型

operator==(;
        }
    }

    v;

    Person p1(刘备35关羽张飞赵云);
    Person p5(曹操将人员插入到容器中
    v.push_back(p1);
    v.push_back(p2);
    v.push_back(p3);
    v.push_back(p4);
    v.push_back(p5);

    Person p(诸葛亮int num = count(v.begin(),p);

    cout << 和诸葛亮同岁数的人员个数为: main() {
    
    ;
}

6.count_if

#include<iostream>
常用查找算法  count_if

统计内置数据类型
 count_if(v.begin(),Greater20());

    cout << 大于20的元素个数为:  AgeGreater20
{
const Person&return p.m_Age > 统计自定义数据类型
);

    v.push_back(p1);
    v.push_back(p2);
    v.push_back(p3);
    v.push_back(p4);
    v.push_back(p5);

    统计  大于20岁人员个数
    大于20岁的人员个数为:;
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...