- 博客(14)
- 收藏
- 关注
原创 2022-1-26 泛型算法和函数对象
#include<algorithm>//泛型算法头文件template<typename IT,typename INSERT_IT>void Copy(const IT& first,const IT& last,INSERT_IT it)//拷贝区间[ ){ IT tmp=first; for(;tmp!=last;tmp++) { *it=*tmp; }}vector<int> v...
2022-01-26 20:54:38 808
原创 2022-1-25 STL迭代器
一、顺序型迭代器(遍历型迭代器)iterator——正向迭代器 reverse_iterator——反向迭代器 const_iterator——常量正向迭代器 const_reverse_iterator——常量反向迭代器 //函数模板,正向打印容器内元素template<typaname CON>void show(CON& src){ typaname CON::iterator it = src.begin(); for(;it != src
2022-01-25 20:43:53 505
原创 2022-1-24 STL容器
一、近容器int arr[ ]:数组 string:字符串,增删改查 string s;string s1(s.begin(),s.end());string s2(s1);s.push_back('c');s.pop_back();s.front();s.back();s.erase(pos);string::iterator it = s.begin();for(it;it!=s.end();it++){ if(*it=='a') { i
2022-01-24 14:12:23 745
原创 2022-1-22 继承和多态2
一、多态多态:分为静多态和动多态,静多态——编译时期的多态,又被称为早绑定(eg:函数重 载,模板);动多态——运行时期的多态——又被称为晚绑定(eg:继承中的多 态) 隐藏:子类中的成员会隐藏父类中的同名成员 覆盖:子类中的成员方法会覆盖父类中相同的虚函数 动多态的产生条件:指针或引用调用虚函数 + 对象必须完整 class Base{public: Base() { th...
2022-01-22 14:53:43 241
原创 2022-1-21 继承和多态1
一、继承类与类之间的关系:①嵌套——一个类中声明了另一个类,即一个类是另一个类的一部分; ②代理——一个类的接口是另一个类接口的子集,即一个类的功能需要 依赖另一个类的功能; ...
2022-01-21 13:28:23 312
原创 2022-1-20 模拟实现vector
一、容器近容器:只能容纳一种固定的数据类型的“器皿”(如string、int arr[10]、char str[10]) 容器:vector——数组 格式: vector<int> v1;for(int i=1;i<10;i++){ v1.push_back(i);} 实现 //Mvector.h#ifndef MVECTOR_H#define MVECTOR_Htemplate<typename T>class Mvector{
2022-01-20 23:00:00 173
原创 2022-1-18 Mstring的写时拷贝
一、写时拷贝当多个对象同时拥有同一块内存的时候,每个对象对这块内存都只有读取的权限 如果有某个对象需要改动这块内存时,就给该对象拷贝出一份独有的内存 省内存,省时间二、引用计数防止对象多次析构造成内存泄露 实现:在申请_str时,多申请四字节的空间用于存放引用计数 获取引用计数: int& Get_Num(){//先将_str强转为整形指针,再对其解引用,得到的即为_str内存中前四字节存放的整型计数值 return *((int*)_str);} 三、实现写时
2022-01-20 13:23:14 184
原创 2022-1-19 模板1
一、模板的引入重载:函数名相同,参数列表不同——静多态(编译时期的多态)——早绑定 C++中产生函数符号依赖于函数名和参数列表 假如能够把类型也当作参数传入函数中,可避免重载时大量重复代码的编写二、函数模板格式: template<typename T>bool compare(T a,T b){ cout<<"template<typename T>bool compare(T a,T b)"<<endl; return
2022-01-19 23:00:00 268
原创 2022-1-14 Mstring基础类实现
//Mstring.h#ifndef MSTRING_H#define MSTRING_H#include<iostream>using namespace std;#define DEFAULT_LEN 10class Mstring{public: Mstring(const char* str = NULL); Mstring(const Mstring& src); Mstring& operator=(const Mstring& s.
2022-01-14 17:46:07 178
原创 2022-1-11 面向对象3
一、类与类之间的关系组合:一个类是另一个类的组成部分(如eye和head,Node与List) 嵌套(特殊的组合):一个类在另一个类中(如将Node类定义在List中作为其成员) 代理:一个类的成员方法依赖于另一个类实现二、类的编译顺序编译本类名 编译成员名(成员方法和成员变量),编译嵌套类 编译方法体三、类的构造顺序先构造成员对象,再构造本对象 先析构本对象,再析构成员对象...
2022-01-11 20:21:10 98
原创 2021-12-30 面向对象2
一、类内权限private:私有的,除了自己类内部以外都不能使用 public:公有的,对外暴露的,外界具有读写操作权限 类内默认私有;struct中默认公有 权限选择:必须要对外界提供的,就放在public,其余都放在private;一般成员属性都放在 private,如果外界需要使用就提供公有接口二、定义对象初始化:在定义时给值,内存划分时给值 赋值:定义之后给值,内存划分完之后给值 //class Person//const int _...
2022-01-06 21:17:24 365
原创 2021-12-6 面向对象1
一、面向对象三(四)大特性:封装,继承,多态,(抽象)二、类 class成员属性 成员方法:每个类的普通成员方法都会默认将该类型的指针(*this)作为第一个参数在编译 期传入,在调用该函数时,会将使用到的对象的地址作为参数传入 this指针(指向本对象的指针):①普通成员方法的第一个参数,默认加上this指针 (编译期自动加入) ②在普通成员方法内使用到普通成员的地方,加上this-&g...
2021-12-06 20:15:41 511
原创 2021-12-1 C和C++的区别2
一、using namespace std;//tmp.h定义命名空间的头文件namespace AA{ typedef int INT; typename char CHAR;};using namespace AA;//使用整个命名空间int main(){ INT a = 10; return 0;}using namespace AA::INT;//使用某个命名int main(){ INT b = 10; //CH
2021-12-02 21:44:39 422
原创 2021-10-28 C和C++的区别1
函数的区别一、函数的默认值参数在函数声明或者定义的时候,给定参数默认值,如果实参传递时,不给该形参传值,则会按照默认值传参。 函数参数的默认值是在编译期生成指令的时候,直接生成入参指令。 int data = 10;int fun(int a, int b, int c = data)//变量在运行时取值,即编译期生成指令时 系统无法获得data的值,也就无法赋给变量c{ cout << a << endl; cout << b &l.
2021-11-01 18:01:01 64
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人