STL标准库和泛型编程(侯捷)
本文是学习侯捷老师的STL标准库和泛型编程的课程学习笔记。
第一讲:学会运用STL各大部件 (components),并初步认识其体系结构。1. 认识headers、版本、重要资源
C++标准库的header files 不带副档名(.h),例如 #include <vector>
新式C header files 不带副档名.h,例如 #include <cstdio>
旧式C header files (带有副档名).h仍然可用,例如 #include <stdio.h>
新式headers内的组件封装于namespace “std”using namespace std; or using std::cout; (for example)
旧式headers内的组件不封装于namespace “std”
重要网页:
https://cplusplus.com/
https://zh.cppreference.com/
https://gcc.gnu.org
2. STL体系结构基础介绍STL六大部件(component是):
容器 ...
C++面向对象高级编程(下-侯捷)
本文是学习侯捷老师的C++面向对象高级编程(下)的课程笔记。
1、导读侯捷老师提到这个课程应该称为C++程序设计Ⅱ兼谈对象模型,因为他并没有过多的叙述面向对象编程,而是在上篇的基础上探讨一些没有讨论过的主题。
在先前基础课程所培养的正规、大器的编程素养上,继续探讨更多技术。
泛型编程(Generic Programming)和面向对象编程(Object-Oriented Programming)虽然分属不同思维但它们正是C++的技术主线,所以本课程也讨论template (模板)。
深入探索面向对象之继承关伪(inheritance)所形成的对象模型(Object Model),包括隐藏于底层的this指针,vptr (虚指针), vtbl (虚表), virtual mechanism (虚机制),以及虚函数(virtual functions)造成polymorphism (多态)效果。
2、conversion function转换函数作用:把一个class的类型转换成你想要的、自认为合理的类型,但是如何转换有自己在函数体内设计。
格式:operator double() ...
C++面向对象高级编程(上-侯捷)
本文是学习侯捷老师的C++面向对象高级编程(上)的课程笔记。
一、Class without pointer member(s) —— complex类1、C++简介2、头文件与类的声明头文件的防卫式声明
作用:防止同一个文件被包含多次
#ifndef
123456#ifndef __COMPLEX__#define __COMPLEX__... ... // 声明、定义语句#endif
特点:
跨平台
可针对文件也可针对代码片段。
编译慢,有宏命名冲突的风险。
#pragmaonce
123#pragmaonce... ... // 声明、定义语句
特点:
不跨平台
只能针对文件
编译快,无宏命名冲突的风险。
3、构造函数如果一个类不带指针,则多半可以不写析构函数(还是推荐写上,万一你忘了呢?)。
在class body 内定义的函数自动inline,在类外要加inline关键字。inline函数可以让编译变快,你可以试着把所有函数都定义inline,但编译器inline不inline就不一定了,换句话说,你只是提交了一份inline“申请”,如果inline ...
Effective C++阅读笔记
Effective C++阅读笔记
论文笔记Uformer:A General U-Shaped Transformer for Image Restoration
一篇发表在CVPR2021上关于图像恢复的论文,提出了一个高效的基于Transformer的架构——Uformer。
【CVPR 2022】Restormer:Efficient Transformer for High-Resolution Image Restoration
本文提出一种low-level视觉新Transformer模型:Restormer,在多个图像恢复任务上取得了最先进的结果,包括图像去雨、单图像运动去模糊、散焦去模糊(单图像和双像素数据)和图像去噪等,优于SwinIR、IPT等网络。