C++笔记
C++学习过程中的基础笔记,图中标红部分为自己理解
勿在浮沙築高臺
这个作者很懒,什么都没留下…
展开
-
C++显示转换、dynamic_cast重点
命名的强制类型转换具体格式如下:cast-name<type>(expression)type是转换的目标类型expression是要转换的对象cast-name包括static_cast、dynamic_cast、const_cast和reinterpret_caststatic_cast只要不包含底层const都可以使用static_cast。例如下面转换:double slope = static_cast<double>(j)/i;当需要把一原创 2021-12-27 22:57:59 · 453 阅读 · 0 评论 -
C++_泛型编程与标准库(十)——set与map
C++_泛型编程与标准库(十)——set与map参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs2019图中标红部分为自己的笔记理解SETGNU 9.3.0的set部分代码如下,图中可以看到_Rb_tree重定义为_Rep_type,由_Rep_type再定义一个红黑树,其中key和value一样vc2019的set部分代码如下,进一步观察_Tree可以看到,vc2019少了一个模板参数,而实现方法就在_Tree的模板参数也是一个泛型模板,在_Tset_traits中实现key就原创 2021-11-29 17:14:04 · 406 阅读 · 0 评论 -
C++_泛型编程与标准库(九)——红黑树的使用
C++_泛型编程与标准库(九)——红黑树的使用参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs2019图中标红部分为自己的笔记理解 struct _Rb_tree_node_base { typedef _Rb_tree_node_base* _Base_ptr; typedef const _Rb_tree_node_base* _Const_Base_ptr; _Rb_tree_color _M_color; _Base_ptr _M_p原创 2021-11-28 22:59:15 · 771 阅读 · 0 评论 -
C++_泛型编程与标准库(八)
C++_泛型编程与标准库(八)参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs20191、arrayGNU 2.9的写法array GNU9.3.0部分源码array没有ctor,没有dtor,包括vs2019也是template<typename _Tp, std::size_t _Nm> struct __array_traits { typedef _Tp _Type[_Nm];//_Type为数组名类型,通过其定义出来就是一个数原创 2021-11-24 20:49:14 · 724 阅读 · 0 评论 -
C++11
C++11参考侯捷C++11&14,《C++ primer》1、Spaces in Template ExpressionsC++2.0之前的模板在使用时,如果模板参数最后一个符号是> 需要用空格将其与最后的>隔开,否则编译器会把模板参数的最后一个>当成操作符vector<list<int> >//旧vector<list<int>>//新 2、nullptr、nullptr_t与NULLstd::nu原创 2021-11-22 10:44:28 · 674 阅读 · 1 评论 -
C++_泛型编程与标准库(七)
C++_泛型编程与标准库(七)参考:《侯捷泛化编程与标准库》、VC20191、深度探索vector笔者觉得在最新的VC2019下不是二倍增长,虽然是几何增长,但是增加的是之前的1/2;不是完全二倍增长在VC2019的32位程序下,vector类型大小是16位的,其中包含了3个4位的功能同start,finish,end_of_storage的指针,还有4位是继承基类容器(_Container_base12)里的指针而来的四个字节;struct _Container_base12 {_Co原创 2021-10-28 12:56:59 · 463 阅读 · 0 评论 -
C++_泛型编程与标准库(六)
C++_泛型编程与标准库(六)1、iterator几个特定属性vc2019的链表list迭代器部分代码// CLASS TEMPLATE _List_iteratortemplate <class _Mylist>class _List_iterator : public _List_const_iterator<_Mylist> {public: using _Mybase = _List_const_iterator<_Myli原创 2021-10-20 22:02:06 · 317 阅读 · 0 评论 -
C++_泛型编程与标准库(五)
C++_泛型编程与标准库(五)1、容器与容器之间的关系2、深度探索listlist是双向链表,从vc2019的list源码和以下图片都可以看出template <class _Value_type, class _Voidptr>struct _List_node { // list node using value_type = _Value_type; using _Nodeptr = _Rebind_pointer_t<_Voidptr, _Lis原创 2021-10-19 20:44:12 · 218 阅读 · 0 评论 -
C++_泛型编程与标准库(四)
C++_泛型编程与标准库(四)1、注意一个特化的typedefine2、分配器2.2、VC2019的allocator类1. allocate调用operator new,再调用malloc2. deallocate调用operator delete,operator delete又调用freetemplate <class _Ty>class allocator {public: static_assert(!is_const_v<_Ty>, "The原创 2021-10-19 15:33:07 · 613 阅读 · 0 评论 -
C++_泛型编程与标准库(三)
C++_泛型编程与标准库(三)1、分配器简单测试,后面还会单讲实测VC2019在Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include文件夹下2、标准库实现方法,OOP与GP的区别3、链表list不能使用算法库的sort链表list不能使用算法库的sort,否则会出错,比如下列代码:#include <iostream>#include <list>#inclu原创 2021-10-16 17:29:38 · 146 阅读 · 0 评论 -
C++_泛型编程与标准库(二)
C++_泛型编程与标准库(二)为什么快?因为是红黑树实现的(高度平衡树)原创 2021-08-24 10:25:47 · 131 阅读 · 0 评论 -
C++_泛型编程与标准库(一)
C++_泛型编程与标准库(一)原创 2021-08-11 16:59:46 · 141 阅读 · 0 评论 -
C++_重载new,delete
C++_重载new,delete这里重载的是new三步delete两步里的第一步操作,这点一定要注意,所以下面出现size可以直接malloc,可以看以前笔记new表达式(new)、operator new(new的第一个过程)、array new(new [])、placement new这么多种C++__堆,栈与内存管理_勿在浮沙築高台-CSDN博客_c内存管理...原创 2021-08-05 16:13:17 · 129 阅读 · 0 评论 -
C++_动态绑定,再谈const,new,delete
C++_动态绑定,再谈const,new,delete原创 2021-08-05 14:55:17 · 125 阅读 · 0 评论 -
C++_vptr与vtbl,虚函数与虚表
C++_vptr与vtbl,虚函数与虚表参考:c++继承父类的子类,如何调用父类的同名函数?侯捷C++面向对象高级编程part2部分原创 2021-07-30 11:13:10 · 439 阅读 · 0 评论 -
C++_reference
C++_reference成员函数在不改变成员值的时候,最好在末尾加const测试const重载代码:// vector::emplace_back#include <iostream>#include <vector>struct cc{ void bb()const{std::cout<<"***"<<std::endl;}; void bb(){std::cout<<"&&&"<&原创 2021-07-29 20:41:50 · 105 阅读 · 0 评论 -
C++_可变参数模板到emplace_back再到construct再到forward
C++_可变参数模板到emplace_back再到construct再到forward1、可变参数模板具体定义如下图所示:编写一个可变参数版本:1.1sizeof…运算符2、emplace_back与emplace在我学习这个可变参数模板知识时想起了,请两天在浏览stl的容器是,有这么两个函数emplace_back与emplace,定义分别如下template <class... Args>iterator emplace (const_iterator posit原创 2021-07-28 21:38:24 · 374 阅读 · 0 评论 -
C++_模板特化(specialization),模板偏特化(局部特化)(partial specialization)
C++_模板特化(specialization),模板偏特化(局部特化)(partial specialization)1、模板特化函数模板也可以特化,特化要符合模板参数类型2、模板偏特化(局部特化)原创 2021-07-26 16:23:27 · 277 阅读 · 0 评论 -
C++_member template成员模板
C++_member template成员模板原创 2021-07-23 21:30:03 · 145 阅读 · 0 评论 -
C++_pointer-like classes,function-like classes
C++_pointer-like classes,function-like classes1.pointer-like classesC++——智能指针——auto_ptr、shared_ptr、unique_ptrC++——auto_ptr与unique_ptr2.function-like classes原创 2021-07-21 16:41:08 · 129 阅读 · 0 评论 -
C++__conversion function,Non-explicit one argument constructor
C++__conversion function,Non-explicit one argument constructor1.conversion function2.Non-explicit one argument constructor3.explicit one argument constructor原创 2021-07-21 14:04:02 · 136 阅读 · 0 评论 -
C++_复合、委托、继承
C++_复合、委托、继承1、复合(has-a)[外链图片转存中…(img-QZr62R4v-1626834603920)][外链图片转存中…(img-a5u7xlQZ-1626834603923)][外链图片转存中…(img-VD6Bmt4G-1626834603926)][外链图片转存中…(img-W1aAfNux-1626834603930)]2、委托[外链图片转存中…(img-8fbai7y7-1626834603932)]3、继承(is-a)[外链图片转存中…(img-0XrHD9原创 2021-07-21 10:42:40 · 203 阅读 · 0 评论 -
C++_static,类模板、函数模板、namespace
C++_static,类模板、函数模板、namespace1、static2、类模板3、函数模板4、namespace5、深入,更多细节原创 2021-06-27 22:19:51 · 369 阅读 · 2 评论 -
C++__堆,栈与内存管理
C++__堆,栈与内存管理1、什么是栈,什么是堆具体可以看这篇:转载【C】堆区和栈区的区别2、静态变量,全局变量,堆,栈生命周期3、new与delete的动作4、动态分配的内存计算参考:《侯捷C++面向对象高级开发》...原创 2021-06-26 22:08:53 · 241 阅读 · 2 评论 -
C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载
C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载构造函数与析构函数::涉及构造函数还可以看这篇文章C++搞懂深拷贝初始化=与赋值=的区别1、声明和定义构造函数和析构函数构造函数在定义类对象时会自动被调用,在对象声明结束时析构会自动被调用class name{private: int a,b;public: name(int x,int y);//构造声明 ~name();//析构声明}name::name(int x=0,int y=0):a(x),b(y){原创 2021-06-23 15:23:18 · 256 阅读 · 3 评论