当前位置: 首页 > news >正文

C++学习细节回顾(汇总二)

一.初始化列表相关
1.初始化顺序受申明顺序影响
2.在必要时可以部分不采用初始化列表,避免受特性1影响

二.非类型模板参数
template< class T , size_t N = 10 >

三.特化–特殊化处理
template< class T >
bool less(T left , T right)
{
return left<right;
}
当调用时传入的是地址,这时候比较逻辑存在错误
因此要采用特化(类似于类的显示实例化)
template<>
bool less<Date*>(Date * left ,Date* right)
{
return *left<*right;
}
注意:模板函数一般不采用特化,直接写个匹配的普通函数就行了(有现成吃现成)

小细节讲解:
bool less(const T& left…)
特化:
bool less< const Date*& left> 不对特化不成功,模板函数const修饰的是left ,这里修饰的是 * left
bool less< Date* const & left> ,正确的

四.类模板–特化
1.全特化 template<> class Date< int char >
2.偏特化有两种一种是部分特化,一种是对参数形成限制
template< class T1> class Date< class T1, char >//部分特化
template< class T1 class T2> class Date< T1* ,T2* >//对参数形成限制

类模板特化应用示例
有如下专门用来按照小于比较的类模板Less:
template
struct Less
{
bool operator()(const T& x, const T& y) const
{
return x < y;
}
};

sort( v1.begin() , v1.end() , Less < Date >( ));
// 可以直接排序,结果错误日期还不是升序,而v2中放的地址是升序
// 此处需要在排序过程中,让sort比较v2中存放地址指向的日期对象
// 但是走Less模板,sort在排序时实际比较的是v2中指针的地址,因此无法达到预期
sort(v2.begin(), v2.end(), Less<Date>( ));*
解决方案:// 对Less类模板按照指针方式特化
template<>
struct Less<Date*>
{
bool operator()(Date* x, Date* y) const
{
return *x < *y;
}
};

在这里插入图片描述

五.编译.声明和定义相关问题
在这里插入图片描述
在这里插入图片描述

六…(难点目前不会??????)
1.仿函数
2.普通迭代器和const迭代器

在这里插入图片描述

相关文章:

  • 【交互 / 差分约束】
  • AD 规则的使能及优先级的设置
  • 机密虚拟机的威胁模型
  • Java 与 Go 语言对比
  • 【 Java开发枚举值规范】
  • NACOS基于长链接的⼀致性模型
  • 从Transformer到多模态智能,剖析人工智能时代的核心引擎​​
  • 在Linux中如何使用Kill(),向进程发送发送信号
  • 编程题 03-树2 List Leaves【PAT】
  • 为什么要选择七彩喜数字康养平台?加盟后有何优势?
  • Oracle版本、补丁及升级(12)——补丁及补丁集
  • 2011-2020年各省粗离婚率数据
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- consistency is the key
  • AI时代的弯道超车之第十二章:英语和编程重要性?
  • 动态规划问题 -- 多状态模型(删除并获得点数)
  • MySQL之基础索引
  • 第二十九节:直方图处理-直方图均衡化
  • Made with Unity | 拓展“双点”宇宙版图
  • 【Python3教程】Python3基础篇之输入与输出
  • Redis学习打卡-Day1-SpringDataRedis、有状态无状态
  • 手机表面细菌菌落总数可能比马桶高10倍,医生详解如何洗手
  • 视频丨中国海警成功救助8名外籍遇险渔民,韩方向中方致谢
  • 《克莱默夫妇》导演罗伯特·本顿去世,终年92岁
  • 广东省中医院脾胃病科大科主任张北平病逝,年仅52岁
  • 反犹、资金与抗议:特朗普的施压如何撕裂美国大学?|907编辑部
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新