常见查找算法
- find // 查找元素
- find_if // 按条件查找元素
- adjacent_find // 查找相邻重复元素
- binary_search // 二分查找法:效率最高的。
- count // 统计元素个数
- count_if // 按条件统计元素个数
find
- 查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()。
函数原型:
- find(iterator beg, iterator end, value);
- // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
- // beg 开始迭代器
- // end 结束迭代器
- // value 查找的元素
找内置数据类型:
void test01()
{
vector<int> v;
v.push_back(10);
v.push_back(30);
v.push_back(50);
v.push_back(20);
vector<int>::iterator it = find(v.begin(), v.end(), 20);
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;
}
string m_Name;
int m_Age;
};
void test02()
{
vector<Person> v;
Person p1("aaa", 8);
Person p2("bbb", 18);
Person p3("ccc", 38);
Per
STL算法详解:查找、计数与条件搜索

本文介绍了C++ STL中的查找算法find及其变种find_if,包括二分查找binary_search,以及count和count_if用于元素计数。重点讲解了自定义数据类型的查找技巧,如重载==运算符。同时概述了adjacent_find用于查找相邻重复元素的功能。
最低0.47元/天 解锁文章
1487

被折叠的 条评论
为什么被折叠?



