引入#include<algorithm>
算法简介:
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岁的人员个数为:; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。