C++ STL笔记十三:STL 常用算法二:常用查找算法;

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

常见查找算法

  • 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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值