• C++11 Alias Template(template typedef)化名,Alias,换一个名称


    在这里插入图片描述

    (1)using Vec=std::vector,创建容器时自动默认选择alloc,如果自己写的迭代器就每次都要,在using Vec之后,就可以直接用Vec来代替;
    (2)而使用define宏定义和typedef是无法达到这个效果的;
    (3)不能对化名,来进行特化和偏特化,还是需要对原来的对象进行特化,化名只是一个名字,不代表本尊;

    在这里插入图片描述
    (1)左侧版本天方夜谈:因为传入的参数是一个容器(类型),但接收的是一个容器对象object,函数体中对容器类型进行区分,不太对。。。左侧有报错信息;
    (2)右侧改善,传过去的是一个对象object,修改为list<>(),建立一个临时对象;然后推导出对象的类型;然后用这个类型;但是还是不对,编译器报错:Container不是模板,修改为typename Containerc,依旧报错,因为typename默认会有::;
    (3)修改改善的版本如下:
    在这里插入图片描述
    (1)传入的是一个容器的对象object,需要在函数中取出容器的元素类型,函数第一行首先取出容器中的iterator迭代器,然后使用迭代器萃取机提问value type从而获得容器内的元素类型;
    (2)如果没有iterator和traits呢?不死心继续尝试第一种的想法,模板接收一个模板template参数Continer,Container本身又是一个class template类模板,能取出Container的template参数。例如收到vector,能够取出其元素类型string;->模板模板参数

  • 相关阅读:
    前端学习笔记--React
    9.16 美团笔试 4.06 / 5.00
    internship:术语了解及着手写接口
    Nginx安装搭建之源码方式(Centos7)
    基于Mnesia的分布式缓存
    forplo | 冲冲冲!这个画森林图的包好flexible哦~
    令人期待的 CSS 新功能:让编码更高效
    为什么现在很多企业都在做私域?
    ARMday06(总线、串口、RCC章节分析)
    AdaBoost:提升机器学习的力量
  • 原文地址:https://blog.csdn.net/weixin_44570263/article/details/126060698