首页 > 编程语言 >c++ pass function as argument

c++ pass function as argument

时间:2023-03-15 09:23:17浏览次数:60  
标签:function std argument c++ util ul len func time

//util.cpp
#include "model/util.h"

void util::invoke_func_args(const util &ul, const int &len)
{
    util ulcopy=ul;
    pass_func_args(ulcopy,len,&get_str_uuid2);
    pass_func_args(ulcopy,len,&get_char_uuid);
}

void util::pass_func_args(util&ul,const int&len,void(*func)(util&,const int&))
{
    std::chrono::time_point<std::chrono::high_resolution_clock> start_time,end_time;
    start_time=std::chrono::high_resolution_clock::now();
    func(ul,len);
    end_time=std::chrono::high_resolution_clock::now();
    std::cout<<"Time cost "<<
    std::chrono::duration_cast<std::chrono::milliseconds>(end_time-start_time).count()<<" milliseconds!"<<std::endl<<std::endl;
}

void util::get_str_uuid2(util &ul,const int& len)
{
    for(int i=0;i<len;i++)
    {
        ul.get_str_uuid();
    }
}

void util::get_char_uuid(util &ul,const int& len)
{ 
    for(int i=0;i<len;i++)
    {
        ul.get_uuid();
    }
}



std::string util::get_str_uuid()
{
    uuid_t new_uuid;
    uuid_generate(new_uuid);
    uuid_unparse(new_uuid,uuid_value);
    return std::string(uuid_value);
}

char *util::get_uuid()
{
    uuid_t new_uuid;
    uuid_generate(new_uuid);
    uuid_unparse(new_uuid, uuid_value);
    return uuid_value;
}


//main.cpp
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#include "model/util.h"

void invoke_func_args_demo(const int &len)
{ 
    util ul;
    ul.invoke_func_args(ul,len);
}

int main(int argc, char **argv)
{
    invoke_func_args_demo(atoi(argv[1]));     
}

 

Compile

g++ -g -std=c++2a -I. *.cpp ./model/*.cpp -o h1 -luuid -lpthread

 

//std::function<void(util &,const int &)>func
//func(ul,len)

void util::stdfunction_invoke_func(util &ul,const int &len)
{ 
    
    stdfunction_pass_func(ul,len,&get_str_uuid2);
    stdfunction_pass_func(ul,len,&get_char_uuid);
}

void util::stdfunction_pass_func(util &ul,const int &len,std::function<void(util &,const int &)>func)
{
    std::chrono::time_point<std::chrono::high_resolution_clock> start_time,end_time;
    start_time=std::chrono::high_resolution_clock::now();
    func(ul,len); 
    end_time=std::chrono::high_resolution_clock::now();
    std::uint64_t mills_count=std::chrono::duration_cast<std::chrono::milliseconds>(end_time-start_time).count();
    std::cout<<"Len="<<",Total Time cost "<<mills_count
    <<" milliseconds!"<<",Per Million Time cost "<<mills_count/(len/1000000)<<" milliseconds!"<<std::endl<<std::endl;
}

 

void util::stdfunction_invoke_func(util &ul,const int &len)
{     
    stdfunction_pass_func(ul,len,&get_char_uuid);
}

void util::stdfunction_pass_func(util &ul,const int &len,std::function<void(util &,const int &)>func)
{
    std::chrono::time_point<std::chrono::high_resolution_clock> start_time,end_time;
    start_time=std::chrono::high_resolution_clock::now();
    func(ul,len); 
    end_time=std::chrono::high_resolution_clock::now();
    std::uint64_t mills_count=std::chrono::duration_cast<std::chrono::milliseconds>(end_time-start_time).count();
    std::cout<<"Len="<<len<<",Total Time cost "<<mills_count
    <<" milliseconds!"<<",Per Million Time cost "<<mills_count/(len/1000000)<<" milliseconds!"<<std::endl<<std::endl;
}

 

标签:function,std,argument,c++,util,ul,len,func,time
From: https://www.cnblogs.com/Fred1987/p/17217253.html

相关文章

  • C++/Qt网络通讯模块设计与实现(一)
    模块介绍网络通讯模块负责网络数据包的发送、接收以及对外提供功能调用以及接口回调,其不进行产品业务的实现。传输协议基于TCP可靠传输。用途平台化复用类图详细讲......
  • ABAP 基于Function ALV 实现单元格自定义搜索帮助
    1.实现ALV报表自定义搜索帮助效果如下:点击搜索帮助按钮,弹出框 双击值并填入单元格内 2.实现思路 2.1定义变量以及F4搜索帮助自定义类,并实现 "定义ALV变量......
  • 一个轻量级简单易用的c++请求库
    Sion是一个轻量级简单易用的c++请求库仅单个头文件,自带std::string的扩展跨平台,支持linux,win,mac...有着良好的异步支持,可以选择以自己喜欢的方式发送异步请求,cal......
  • c++11多线程入门<学习记录>
    最近学习了c++多线程相关知识,也算是对这方面内容的入门视频链接c++11并发与多线程视频课程看了大概两周,简单进行总结参考文章C++11并发与多线程PS:c++11提供了标准的可......
  • C++ STL标准模板库使用
    C++STL标准模板库使用在线手册参考C++STL(标准模板库)是一组标准的C++库,包含了许多常用的数据结构和算法,可大大提高开发效率。以下是常用的STL组件:容器(Container......
  • c++ noexcept与constexpr解析
    文章目录​​1.noexcept无需抛出异常​​​​2.constexpr静态编译关键字​​​​编译期常量​​​​类中constexpr​​1.noexcept无需抛出异常在C++中使用noexcept来标识......
  • C++ 哈希表的总结与例题
    文章目录​​C++STL​​​​哈希表​​​​设计哈希集合​​​​设计哈希映射​​​​哈希集合​​​​例题一:只出现一次的数字​​​​例题二:快乐数​​​​哈希映射​​​......
  • 以下是一个使用C++实现HTTP文件下载的简单示例,其中使用了C++ 11的标准库和Boost库:
    #include<iostream>#include<fstream>#include<boost/asio.hpp>usingboost::asio::ip::tcp;intmain(){try{boost::asio::io_serviceio_se......
  • C++ 基础部分 个人笔记
    本人菜鸟,个人学习笔记,如有错误还请指教C++模板是什么C++模板是一种基于类型参数化的编程技术,使用模板可以使得程序员编写独立于具体数据类型的通用代码。通过参数化类......
  • postger平移oracle的function中涉及substr('float'*x,y,z)問題解決方案
    背景:工作中需要將oracle中的function平移到postger中,在一個view中調用了該function,function中需要對浮點數相乘操作,然後在截取,在AquaDataStudio中創建function能成功,但是......