模板引用内部函数绑定机制,R转义字符,C引用包装器,别名,模板元,宏,断言,C多线程,C智能指针

转义字符  时间:2021-04-20  阅读:()

1、引用内部函数绑定机制

#include<iostream>

#include<functional>u s ingnamespac est d;usingnamespacestd: :placeholders;

//仿函数创建一个函数指针 引用一个结构体内部或者一个类内部的共有函数structMyStruct

{voidadd(inta)

{cout<<a<<endl ;

}voidadd2(inta, intb)

{cout<<a + b<<endl;

}voidadd3(inta, intb, intc)

{cout<<a + b + c<<endl;

}

} ;voidmain()

{

MyStructstruct1;

//auto自动变量地址 函数指针 bind绑定

//第一个参数引用内部函数绑定一个实体对象

//这里后面的_1等为占位用autofunc = bind(&MyStruct: :add, &struct1, _1) ;autofunc2 = b ind(&MyStruct: :add2, &struct1, _1, _2) ;autofunc3 = b ind(&MyStruct: :add3, &struct1, _1, _2, _3) ;f unc(100) ;f unc 2(10, 20) ;f unc 3(10, 20, 30) ;cin. get() ;

}voidmain1()

{

//如果想通过另外一种方式获得结构体中的函数还可以通过下面的方式

MyStructstruct1;

//创建函数指针类结构体数据私有代码共享

//函数通过调用调用需要传递对象名进行区分void(MyStruct: :*p) (inta) =&MyStruct: :add;cin. get() ;

}

补充Cocos2dx中关于std: :function和bind的用法案例

2.通过R”()”的方式实现转义字符

#include<iostream>

#include<string>

#include<stdlib.h>voidmain()

{std: :stringpath = R"( "C:\Program Files\Tencent\QQ\QQProtect\Bin\QQProtect. exe")";//通过R"()" 括号之间去掉转义字符system(path.c_str() ) ;system("pause") ;

}

3.引用包装器通过std: :ref(count) 的方式调用。

#include<iostream>template<classT>voidcom(Targ) //模板函数 引用无效 引用包装器

{std: :cout<<"com ="<<&arg<<"\n";arg++;

}voidmain()

{intcount = 10;int&rcount = count;com(count) ;std: :cout<<count<<std: :endl;

//std: :ref(变量)  函数模板,引用包装器

//com(std: :ref(count)) ;c om(rcount) ;std: :cout<<"main="<<&rcount<<"\n";std: :cout<<count<<std: :endl;std: :cin.get() ;

}

使用引用包装器的方式

#include<iostream>template<classT>voidcom(Targ)//模板函数 引用无效引用包装器

{std: :cout<<"com ="<<&arg<<"\n";arg++;

}voidmain()

{intcount = 10;int&rcount = count;com(count) ;std: :cout<<count<<std: :endl;

//std: :ref(变量)  函数模板,引用包装器com(std: :ref(count) ) ;//这种方式代表引用包装器

//com(rcount) ;std: :cout<<"main="<<&rcount<<"\n";std: :cout<<count<<std: :endl;std: :cin.get() ;

}

4.C++别名

#include<iostream>namespacespace{ //隔离模板避免冲突template<classT>usingprt = T*;//模板的简写定义一个模板的指针}intadd(inta, intb)

{returna + b;

}

//typedef是C语言中定义别名的关键字typedef int(*ADD) (inta, intb) ;

//C++中的别名是通过using关键字实现的usingFUNC = int(*) (inta, intb) ;usingco = std: :ios_base: :fmtflags;

voidmain()

{

ADDp = add;std: :cout<<p(1, 2) <<std: :endl;

FUNC func = add;std: :cout<<func(1, 2) <<std: :endl;

//space: :ptr<int>pint(new int(15)) ;

//std: :cout<< *pint << " " << pint <<std: :endl;std: :cin.get() ;

}

5.模板元

#include<iostream>

//主要思想

//

//利用模板特化机制实现编译期条件选择结构利用递归模板实现编译期循环结构模板元程序则由编译器在编译期解释执行。

//

//优劣及适用情况

//

//通过将计算从运行期转移至编译期在结果程序启动之前做尽可能多的工作最终获得速度更快的程序。也就是说模板元编程的优势在于

//

//1.以编译耗时为代价换来卓越的运行期性能一般用于为性能要求严格的数值计算换取更高的性能 。通常来说一个有意义的程序的运行次数或服役时间总是远远超过编译次数或编译时间 。//

//2.提供编译期类型计算通常这才是模板元编程大放异彩的地方。

//

//模板元编程技术并非都是优点

//

//1.代码可读性差 以类模板的方式描述算法也许有点抽象。

//

//2.调试困难元程序执行于编译期没有用于单步跟踪元程序执行的调试器用于设置断点、察看数据等 。程序员可做的只能是等待编译过程失败然后人工破译编译器倾泻到屏幕上的错误信息。//

//3.编译时间长通常带有模板元程序的程序生成的代码尺寸要比普通程序的大

//

//4.可移植性较差对于模板元编程使用的高级模板特性不同的编译器的支持度不同。

//模板元把运行时消耗的时间在编译期间优化template<intN>structdata

{enum {res = data<N - 1>: :res + dat a<N - 2>: :re s } ;} ;

//当为1的情况template<>structdata<1>

{e num {r e s = 1} ;

} ;template<>structdata<2>

{e num { r e s = 1 } ;

} ;intgetdata(intn)

{if (n == 1 | | n == 2)

{return 1;

}else

{returngetdata(n - 1) + getdata(n - 2) ;

}

}voidmain()

{constintmyint = 40;i ntnum = data<my int>: :res;//<>内部不可以有变量std: :cout<<num<<std: :endl ;std: :cout<<getdata(40) <<std: :endl ;std: :cin.get() ;

}

运行结果相同但是后者明显速度要慢于前者。

6.宏

#include<stdio.h>

#include<assert.h>

#include<iostream>u s ingnamespac est d;

#def ineN 10voidmain()

{i ntnum = 100;c out<<num<<endl;

//本文件所在的文件路径cout<<__FILE__<<endl;

//下一行代码在文件中的行位置cout<<__LINE__<<endl;

//日期c out<<__DATE__<<end l;

//日期cout<<__TIME__<<endl;

//当前函数名称cout<< __FUNCTION__ <<endl;cin. get() ;

}

7.断言调试注意static_assert这个是C++11的语法在QT中运行需要加上CONFIG+=C++11

这时候没有输入东西

8.C++中的多线程

#inc lude<thread>

#include<iostream>

#inc lude<windows.h>

#include<vector>u s ingnamespac est d;usingnamespacestd: :thi s_thread;voidmsg()

{

MessageBoxA(0, "12345", "678910",0) ;

}voidmsgA(intnum)

{std: :cout<<get_id() <<" num = "<<num<<std: :endl;

}voidmain()

{

// thread: :hardware_concurrency线程auton = thread: :hardware_concurrency() ;//获得当前cpu核心数我的是4核的std: :cout<<n<<std: :endl;

//获取当前线程编号std: :cout<<"thread = "<<get_id() <<std: :endl;threadthread1 (ms g) ; //创建多线程threadthread2(ms g) ;thread1. join() ;//开始执行

老薛主机入门建站月付34/月,年付345元,半价香港VPS主机

老薛主机怎么样?老薛主机这个商家有存在有一些年头。如果没有记错的话,早年老薛主机是做虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站业务所以能持续到现在。这不,站长看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港vps主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港vps。点击进入...

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

Friendhosting 黑色星期五 VDS/VPS可享四五折优惠促销

Friendhosting商家在前面的篇幅中也又陆续介绍到,是一家保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌克兰和美国洛杉矶等。这不近期黑色星期五活动,商家也有推出了黑五优惠,VPS全场一次性45折,虚拟主机4折,全球多机房可选,老用户续费可获9折加送1个月使用时长,VDS折后最低仅€14.53/年,有需要的可以看看。Friendhos...

转义字符为你推荐
投标人chrome如时间选项无法打开请更改pqqgraph支持ipad敬请参阅最后一页特别声明支持ipad重庆网通重庆联通宽带win7关闭445端口win7系统怎么关闭445和135这两个端口重庆宽带测速重庆哪一种宽带网速最快windows键是哪个Windows快捷键是什么
二级域名 .cn域名注册 vps推荐 免费申请网页 dns是什么 fastdomain 主机屋免费空间 地址大全 html空间 me空间社区 1g空间 爱奇艺vip免费试用7天 100mbps linux使用教程 512mb 架设邮件服务器 东莞服务器托管 电信网络测速器 php服务器 中国联通宽带测试 更多