cb25a_c++_函数对象简介

cb25a_c++_函数对象简介
预定义的函数对象
https://blog.csdn.net/txwtech/article/details/104382505
negate<type>()
plus<type>()
minus<type>()
multilies<type>()
divides<type>()
modulus<type>()

equal_to<type>()
not_equal_to<type>()
less<type>()
greater<type>()
less_equal<type>()
greater_equal<type>()
logical_not<type>()
logical_and<type>()
logical_or<type>()

自定义的函数对象,智能型函数,比普通速度快。有自己的状态
cout << "用函数对象,printInt()自定义的" << endl;
for_each(ivec.begin(), ivec.end(), PrintInt());
容器和函数对象
算法和函数对象
for_each使用

复制代码
/*cb25a_c++_函数对象简介
预定义的函数对象
https://blog.csdn.net/txwtech/article/details/104382505
negate<type>()
plus<type>()
minus<type>()
multilies<type>()
divides<type>()
modulus<type>()

equal_to<type>()
not_equal_to<type>()
less<type>()
greater<type>()
less_equal<type>()
greater_equal<type>()
logical_not<type>()
logical_and<type>()
logical_or<type>()

自定义的函数对象,智能型函数,比普通速度快。有自己的状态
cout << "用函数对象,printInt()自定义的" << endl;
    for_each(ivec.begin(), ivec.end(), PrintInt());
容器和函数对象
算法和函数对象
for_each使用
*/

#include <iostream>
#include <set>
#include <algorithm>
#include <vector>

using namespace std;

void print(int elem)
{
    cout << elem << ' ';
}
//函数对象,class必须要有operator()
class PrintInt
{
public:
    void operator()(int elem) const
    {
        cout << elem << ' ';
    }
};


int main()
{
    //set自动排序,红黑树,二叉树
    //set<int> aa;//省略后,默认的函数对象就是less<int>
    set<int, less<int>> b;//less<int>从小到大的顺序
    set<int, greater<int>> a;//从大到小
    a.insert(9);
    a.insert(3);
    a.insert(8);
    a.insert(1);
    a.insert(5);
    //for (set<int>::iterator iter = a.begin(); iter != a.end(); ++iter)
    for(set<int,greater<int>>::iterator iter=a.begin();iter!=a.end();++iter)
        cout << *iter << endl;
    
    vector<int> ivec;
    for (int i = 2; i <= 9; ++i)
    {
        ivec.push_back(i);
    }
    cout << "用for_each算法" << endl;
    //for_each(ivec.begin(), ivec.end, 函数或函数对象);
    for_each(ivec.begin(), ivec.end(), print);
    cout << "用函数对象,printInt()自定义的" << endl;
    for_each(ivec.begin(), ivec.end(), PrintInt());//函数对象,自动调用operator()函数
    return 0;
}
复制代码

 

posted @   txwtech  阅读(178)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示