随笔分类 -  c++黑马笔记

摘要:vector容器是标准容器的一种,可以存放各种数据,使用模板编写成的,所以使用的时候要首先像模板一样先声明其中的数据类型,同时要include容器 #include<vector> vector<int> v; vector容器本身集成了很多的函数,可以调用,比如begin,end函数等 v.pus 阅读全文
posted @ 2022-05-08 10:51 纸包鱼 阅读(61) 评论(0) 推荐(0) 编辑
摘要:为了建立数据结构和算法的一套标准,形成了stl 主要目的是提高复用性 stl 标准模板库,可以分为容器,算法,迭代器,容器和算法间通过迭代器进行拼接,主要使用模板 细分有6各组件,容器,算法,迭代器,仿函数,适配器,空间配置器 1. 容器:各种数据结构,如vector、list、deque、set、 阅读全文
posted @ 2022-05-08 10:22 纸包鱼 阅读(37) 评论(0) 推荐(0) 编辑
摘要:问题:类模板中成员函数创建时机是在调用阶段,导致分文件编写时链接不到解决:解决方式1:直接包含.cpp源文件,而不是包含.h文件解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制,相当于将.h和.cpp写在一起 只有类模板中会使用.hpp文件 不过这个其 阅读全文
posted @ 2022-05-04 19:25 纸包鱼 阅读(76) 评论(0) 推荐(0) 编辑
摘要:类外实现的时候要说明这是一个模板以及模板的通用变量 template<typename T1 ,typename T2> class person { public: person(T1 name,T2 age); void showperson(); T2 age; T1 name; }; tem 阅读全文
posted @ 2022-05-04 19:15 纸包鱼 阅读(72) 评论(0) 推荐(0) 编辑
摘要:当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型如果不指定,编译器无法给子类分配内存如果想灵活指定出父类中T的类型,子类也需变为类模板 template<typename T> class base { public: T m; }; class son1 : public 阅读全文
posted @ 2022-05-04 17:48 纸包鱼 阅读(156) 评论(0) 推荐(0) 编辑
摘要:1. 指定传入的类型 直接显示对象的数据类型,最常用的 void printperson1(person<string,int> &p) 2. 参数模板化 将对象中的参数变为模板进行传递 template<typename T1 ,typename T2> void printperson2(per 阅读全文
posted @ 2022-05-04 17:37 纸包鱼 阅读(151) 评论(0) 推荐(0) 编辑
摘要:普通类中的成员函数一开始就可以创建类模板中的成员函数在调用时才创建 模板中的数据类型只有在调用的时候才能确定,之前都是不确定的 阅读全文
posted @ 2022-05-04 17:22 纸包鱼 阅读(41) 评论(0) 推荐(0) 编辑
摘要:1. 类模板没有自动类型推导的使用方式 person<string,int>p1("tom",10);//正确 person p1("tom",10);//错误,他不会自动进行推导 2. 类模板在模板参数列表中可以有默认参数 template<typename NameType ,typename 阅读全文
posted @ 2022-05-04 16:24 纸包鱼 阅读(17) 评论(0) 推荐(0) 编辑
摘要:构建一个通用的类,类中的数据类型不具体制定,用一个虚拟的类型来代表 template <typename T> 类 和函数模板基本一致 template<typename NameType,typename AgeType> class person { public: person(NameTyp 阅读全文
posted @ 2022-05-04 16:19 纸包鱼 阅读(35) 评论(0) 推荐(0) 编辑
摘要:比如数组的比较,就没法通过简单的比对函数进行 这种情况下要进行函数模板的重载,或者进行运算符重载 template<> bool compare (person &a,person &b) 阅读全文
posted @ 2022-05-04 15:53 纸包鱼 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1. 如果函数模板和普通函数都可以实现,优先调用普通函数2. 可以通过空模板参数列表来强制调用函数模板 myPrint<>(a, b)3. 函数模板也可以发生重载4. 如果函数模板可以产生更好的匹配,优先调用函数模板 阅读全文
posted @ 2022-05-04 15:38 纸包鱼 阅读(82) 评论(0) 推荐(0) 编辑
摘要:主要区别在于隐式类型转换 普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用显示指定类型的方式,可以发生隐式类型转换 阅读全文
posted @ 2022-05-04 15:28 纸包鱼 阅读(21) 评论(0) 推荐(0) 编辑
摘要:自动类型推导,必须推导出一致的数据类型T,才可以使用,T不会在一个模板函数调用中代表两个意义模板必须要确定出T的数据类型,才可以使用,也就是说函数模板必须说明或者自动分析出typename模板变量 因为模板不能直接调用 typename可以改成class,两者区别不大,在模板定义的时候可以混用 te 阅读全文
posted @ 2022-05-04 15:04 纸包鱼 阅读(32) 评论(0) 推荐(0) 编辑
摘要:c++模板是通用的模具,用于提高复用性 模板不可以直接使用 这是一种思想,叫做泛式编程,有两种模板,函数模板和类模板 函数模板用于建立一个通用函数,函数返回值和形参类型不具体指定,用一个虚拟类型来表示 函数模板声明template<typename T> template 声明创建模板typenam 阅读全文
posted @ 2022-05-04 14:58 纸包鱼 阅读(69) 评论(0) 推荐(0) 编辑
摘要:使用new的意义是申请堆空间(heap)中的内存。heap比起栈空间(stack)的优势在于容量巨大,通常一个程序的stack空间的大小都只有2m左右,具体数值取决于编译器。使用heap需要手动释放内存,但是随时可以释放,使用stack必须等到生命周期结束才会释放内存。对于生命周期短且占用空间小的变 阅读全文
posted @ 2022-04-11 17:28 纸包鱼 阅读(173) 评论(0) 推荐(0) 编辑
摘要:char ch; ifs >> ch ifs.eof() 用来判断文件是否为空,如果为1,那就是空的,思路就是先只读一个字符,然后判断这个字符是不是EOF,如果为空那就是空文件 阅读全文
posted @ 2022-04-11 17:24 纸包鱼 阅读(857) 评论(0) 推荐(0) 编辑
摘要:worker** = new worker*【5】 意思是保存指针的数组的首地址,用这个**来维护保存指针的数组 如果数组超了,那就开辟一的新的堆区,注意开辟新堆区的时候要销毁旧的堆区,删除旧的堆区的时候,堆区变量的类型不变,只是指向的地址并不是堆区了。 注意堆区一定要用后删除,而且这种时候要先把堆 阅读全文
posted @ 2022-04-11 16:54 纸包鱼 阅读(230) 评论(0) 推荐(0) 编辑
摘要:exit()函数本身表示退出程序。 其中: exit(0):表示正常退出 exit(1):表示出错(或非正常)退出。当然,exit()的参数可以不只是1,也可以是其他整型数,如2,3等,作为标识 阅读全文
posted @ 2022-04-11 16:31 纸包鱼 阅读(1103) 评论(0) 推荐(0) 编辑
摘要:#pragma onc写在头文件开始,用于防止重复加载头文件 阅读全文
posted @ 2022-04-11 16:30 纸包鱼 阅读(23) 评论(0) 推荐(0) 编辑
摘要:使用的时候打开方式要指定ios::binary 二进制方式写文件主要利用流对象调用成员函数write函数原型 :ostream& write(const char * buffer,int len);参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数 ofstream o ; 阅读全文
posted @ 2022-04-11 15:59 纸包鱼 阅读(73) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示