【C++】STL标准模板库

1、template 模板类

模板特点:

        在模板编程中,对于没有调动的函数部分,不会参与编译

模板参数分为:

        类型、非类型、其他模板类型

        

申请空间不要使用new,而要使用malloc

        另外:new在申请空间失败的时候是抛出一个异常,不是返回空指针

        

非类型参数(替换规则):

        类型参数是重命名规则

        

模板类的特化:

        泛型:

                所有的类型都可接收,但不接收模板类型

        

        部分特化:

                只接收指针类型

        

        完全特化:

                只接收 char* 类型

        

模板源编程原理:

        部分特化有一定的类型萃取,萃取出原始类型,将 & 型别剥离

        

         

2、template 模板函数

特点:

        由实参推演、确定形参的类型

        

         

推演过程(在编译时完成):

        using T = int、 Max<int>

        

非模板类函数:

        

模板类函数:

        新概念:引用类型未定义。具体得看实参,根据实参确定T、x的类型,也不属于万能引用。

        template< class T >

        void func(T && x){ ... }

        

        拓展点:完美转发

        

函数模板的特化:

        没有泛型母版的存在,就不存在特化版本;

        

        完全特化就用指定类型全部替换T即可,特化时保持原有特性不变。没有泛型母版,特化就没有依据

        

        

3、STL容器类

        

       

构造函数中:

        移动构造、移动赋值(一般在有堆区空间、或文件资源的时候会使用到)

        希望a中的资源全部移到b中,使用移动;先释放b资源,再把a资源移动到b资源,然后释放a资源

        

        希望a、b资源最终相同,可以使用赋值;

         

原位构造函数(重要):

        

        

        关于vector中的reserve和resize区别:

        

        vector如何提高效率:大致估算所需要的空间数量,然后reserve

List双链表:

        

问题思考:什么时候用List、vector、map?


map

        equal_range

        lower_bound

        upper_bound

多重map

        允许关键码相同,相同时在右侧插入

STL仿函数

STL alloc 内存配置器——内存值问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值