网站框架搭建,毕业去设计公司还是企业,杭州公司申请车牌需要什么条件,手机网站打不开被拦截怎么办伪函数
仿函数#xff1a;像函数但不是函数#xff0c;一般有两种形式struct或class
struct或class之所以能够进行仿函数的编写是因为他们可以进行()的运算符重载
int Min(int nNumberA, int nNumberB) 这是一个函数
{ return nNumberA nNumberB ? nNumberA : nNum…伪函数
仿函数像函数但不是函数一般有两种形式struct或class
struct或class之所以能够进行仿函数的编写是因为他们可以进行()的运算符重载
int Min(int nNumberA, int nNumberB) 这是一个函数
{ return nNumberA nNumberB ? nNumberA : nNumberB;
}
以下一个程序进行演示
当仿函数是stuct形式时
struct sMin
{ int operator()(int nNumberA, int nNumberB) { return nNumberA nNumberB ? nNumberA : nNumberB; }
}; 该种形式实现了上述函数类似的功能
当仿函数是class形式时
class cMin
{
public: int operator()(int nNumberA, int nNumberB) { return nNumberA nNumberB ? nNumberA : nNumberB; } int main()
{ std::cout Min(50, 100) std::endl; struct sMin objs; std::cout objs(50, 100) std::endl; 结构体形式仿函数的第一种调用 std::cout sMin()(50, 100) std::endl; 结构体形式仿函数的第二种调用 std::cout cMin()(50, 100) std::endl; 类形式仿函数的调用 return 0;
}
空间适配器
空间适配器顾名思义就是取分配回收内存空间具有可以分为两种行为一种针对普通变量。一种针对类
下面以一个程序演示讲解
int main()
{
空间适配器对普通变量的应用 std::allocatorint obj; 定义一个空间适配器 int * p obj.allocate(1); 利用空间适配器进行分配空间()中的数字代表要分配的定义的类型的空间大小此处分配一个int类型内存空间 obj.construct(p, 12138); 利用空间适配器构造一个变量并赋值 std::cout *p std::endl; 打印12138可以正常使用 *p 100; 也可以解引用修改值 std::cout *p std::endl; 同样也可以正常打印 int *nAddr obj.address(*p); 利用空间适配器设置两个内存指向相同类型的对象 std::cout nAddr \t p std::endl; 两个指针指向同一个位置 int Temp 500; int *nAddr obj.address(Temp); 这种形式类似于上述方法两个变量
内存同样指向同一内存地址 std::cout nAddr \t *nAddr std::endl; 打印该变量地址及数据
以上两种空间适配器的应用类似于申请引用 std::cout obj.max_size() std::endl; 可以获取空间支配器最大的大小 obj.deallocate(p, 1); p伪分配内存的对象1为要回收内存的大小用于回收该空间适配器分配
的对象内存大小
空间适配器对类的应用 std::allocatorMyClass objc; 申请了一个类的类型的空间适配器 MyClass * tObj objc.allocate(1); 创建一个类对象并利用空间适配器申请内存 objc.construct(tObj, 12138); 利用空间适配器进行构造类对象 std::cout tObj-nNumber std::endl; objc.destroy(tObj); 销毁类对象 objc.deallocate(tObj, 1); 回收内存 system(pause); return 0;
}