常用的算法函数
发布日期:2021-04-30 21:01:52
浏览次数:87
分类:精选文章
本文共 2237 字,大约阅读时间需要 7 分钟。
C++ 迭代器函数简明教程
一元函数与一元断言
一元函数:接受一个参数的函数。
一元断言(谓词):返回类型为bool的函数。 for_each()
for_each()用于对容器内的所有元素执行指定的操作。
示例
void print(int &number) { ++number; cout << number << " ";}void test() { vector numberVec = {1, 3, 5, 7, 9, 4, 6, 7}; for_each(numberVec.begin(), numberVec.end(), print); // 或者使用匿名函数形式 for_each(numberVec.begin(), numberVec.end(), [](int &number) { ++number; cout << number << " "; });} remove_if()
remove_if()用于移除容器中不符合条件的元素。
示例
bool func(int number) { return number > 4;}void test() { vector numberVec = {1, 3, 7, 8, 1, 2, 5, 7, 9, 4, 6, 7}; // 复制并显示原始内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator (cout, " ")); cout << endl; cout << endl; // 找到不满足条件的元素并移除 auto it = remove_if(numberVec.begin(), numberVec.end(), func); // 复制并显示修改后的内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator (cout, " ")); cout << endl; // 移除找到的元素及其之后的元素 numberVec.erase(it, numberVec.end()); // 复制并显示最终内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator (cout, " ")); cout << endl;} find()与 count()
find()用于找到第一个匹配元素的位置,count()用于统计匹配元素的总数。
示例
void test() { vector numberVec = {1, 3, 5, 7, 9, 4, 6, 7}; // 复制并显示内容 copy(numberVec.begin(), numberVec.end(), ostream_iterator (cout, " ")); cout << endl; // 统计7的数量 size_t cnt1 = count(numberVec.begin(), numberVec.end(), 7); cout << "cnt1 = " << cnt1 << endl; // 查找元素3的位置 auto it = find(numberVec.begin(), numberVec.end(), 3); if (it == numberVec.end()) { cout << "该元素不存在于vector中" << endl; } else { cout << "该元素存在于vector中" << *it << endl; }} mem_fn()
mem_fn()用于将成员函数传递给算法,如for_each()。
示例
class Number {public: Number(size_t data = 0) : _data(data) {} void print() const { cout << _data << " "; }private: size_t _data;};void test() { vector numbers; for (size_t idx = 1; idx != 30; ++idx) { numbers.push_back(Number(idx)); } // 使用mem_fn传递成员函数 for_each(numbers.begin(), numbers.end(), mem_fn(&Number::print)); // 注意:直接使用Number::print会引发错误 cout << endl;} 这些函数为C++标准库提供了强大的迭代和查找功能,能够简化代码编写和逻辑管理。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2026年06月18日 08时44分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP投票小程序
2023-03-01
php拆分数组不改变key值
2023-03-01
php接口返回数据 用echo 还是return?
2023-03-01
php接口返回状态,大家一般怎么规范接口返回内容
2023-03-01
php接收formdata上传的多个文件,使用formData()上传多个文件
2023-03-01
PHP操作csv文件导入+导出
2023-03-01
php操作mysql用select_php如何操作mysql获取select 结果
2023-03-01
PHP操作符与控制结构
2023-03-01
PHP支付宝SDK使用,电脑网页支付
2023-03-01
php支付宝手机网页支付类实例
2023-03-01
PHP改变数组key值的方法
2023-03-01
php教程之php空白页的原因及解决方法
2023-03-01
PHP数据库操作
2023-03-01
PHP数据文件过大,导致PHP加速器eaccelerator在PHP5.2版本下崩溃
2023-03-01
RabbitMQ - 死信、TTL原理、延迟队列安装和配置
2023-03-01
PHP数据访问的多重查询(租房子查询)
2023-03-01
RabbitMQ - 如保证消息的可靠性?(消息确认、消息持久化、失败重试机制)
2023-03-01
RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型
2023-03-01
php数组函数分析--array_column
2023-03-01
php数组去重复数据的小例子
2023-03-01