
C++
正版河图小迷弟
这个作者很懒,什么都没留下…
展开
-
C++——栈、队列、优先级队列
一、栈——stack(一)stack的原理 stack就是一个“后进先出”的栈,元素从尾部插入,从尾部取出;(二)stack的接口 1、push()-----入栈; 2、pop()------出栈; 3、empty()----判断栈是否为空; 4、top()------获取栈顶元素; 5、size()-----获取栈中元素个数;(三)stack模拟实现 stack是通过其他的容器来进行适配实现的,只要该容器内部能够实现上面的几个接口,就可以用来实现stack适配器; C++底原创 2020-12-11 21:38:54 · 315 阅读 · 0 评论 -
C++——list容器的模拟实现
目录一、定义ListNode结点类二、封装一个迭代器类三、模拟实现list容器(一)定义(二)构造函数(三)拷贝构造函数(四)赋值运算符重载函数(五)析构函数(六)迭代器(七)Capacity(八)元素访问Access(九)Modify一、定义ListNode结点类 因为list容器是用双向循环链表来实现的,所以每一个结点都有指向下一个结点的next指针和指向上一个结点的prev指针;template<class T>struct ListNode{ T _value; List原创 2020-11-21 20:11:47 · 254 阅读 · 0 评论 -
C++模拟实现vector
一、定义my_vector类#include<iostream>#include<assert.h>using namespace std;template<class T>class my_vector{public: //构造函数 //赋值运算符重载 //析构函数 //迭代器 typedef T* iterator; typedef const T* const_iterator; //Capacity //eleme原创 2020-11-19 14:34:48 · 206 阅读 · 0 评论 -
C++——模拟实现string
目录一、定义my_string类二、成员函数(一)构造函数(二)析构函数(三)拷贝构造(四)赋值运算符重载三、迭代器四、Capacity(一)获取string容量(二)改变容量五、元素访问(一)[]运算符重载六、string修改(一)插入insert(二)删除erase(三)尾插push_back(四)尾删pop_back(五)追加插入append(六)+=运算符重载七、关系运算符重载八、查找九、输入输出运算符重载(不是成员函数)(一)输入运算符重载(二)输出运算符重载一、定义my_string类#in原创 2020-11-12 18:11:21 · 315 阅读 · 0 评论 -
C++——string之迭代器
一、string构造void test(){ string str1; //默认构造 string str4("123456"); //C风格字符串创建 string str5 = "123456"; //单参构造隐式类型转换 string str8("12345678", 5); //以字符串前n个字符创建对象,内容为"12345" string str9(10, 'a'); //用n个字符创建对象,内容为10个字符a string str2(原创 2020-11-12 10:41:45 · 8091 阅读 · 2 评论 -
C++——string之对象的构造
string构造 1、默认构造 string(); string str1; 2、C风格字符串创建 string (const char* s); string str2("123456"); 3、单参构造隐式类型转换 string str3 = "123456"; 4、以字符串前n个字符创建对象 string (const char* s, size_t n); string str4("12345678", 5); 5、用n个字符创建原创 2020-11-12 10:36:28 · 150 阅读 · 0 评论 -
C++——模板
目录一、泛型编程二、模板(一)函数模板(二)类模板一、泛型编程 我们在编写程序时,可能会遇到实现同一个功能但是所传的参数不同的函数的场景,举个例子void Swap(int& a, int& b){ int tmp = a; a = b; b = tmp;}void Swap(float& a, float& b){ float tmp = a; a = b; b = tmp;}void Swap(double& a, double&原创 2020-11-10 15:18:04 · 240 阅读 · 1 评论 -
C++——内存管理
一、C/C++内存分布 在我们写代码时,会定义很多的变量,有静态的、全局的、局部的等等,但是这些变量在内存中是分别存放在不同的位置上;二、C语言内存管理 在C语言中,我们是通过malloc/calloc/realloc来申请动态内存的,通过free来释放内存的;malloc:申请一块空间,对里面的内容不做任何处理;calloc:申请一块空间,并对立面的值全部初始化为0;realloc:对空间进行扩容,先申请一片更大的空间,再将原有空间的信息拷贝过来,最后再释放原有空间;free:对mal原创 2020-10-29 18:26:10 · 755 阅读 · 0 评论 -
C++——友元
友元(一)概念 友元分为友元函数和友元类; 友元会增加耦合度,破坏了封装,所以应该尽量少用;(二)友元函数 1、声明与实现 友元函数在类内声明,加friend关键字,在类外实现class Data{public: friend ostream& operator<<(ostream& _cout, const Data& d);private: int _year; int _month; int _day;};ostream&am原创 2020-10-23 23:24:59 · 135 阅读 · 0 评论 -
C++——static成员
目录static成员(一)概念(二)static成员变量(三)static成员函数(四)注意static成员(一)概念 在C语言中,static可以修饰局部变量、全局变量、函数修饰局部变量:增加了局部变量的声明周期;修饰全局变量:限定全局变量只能在本源文件中使用;修饰函数:限定该函数只能在本源文件中使用; 在C++中,static可以用来修饰成员变量和成员函数;(二)static成员变量 1、概念 static修饰成员变量是一个类内部的全局变量,所有对象共享,可以看做类的成员,原创 2020-10-23 23:00:14 · 206 阅读 · 0 评论 -
C++——explicit关键字
我们看下面这样一段代码:class A{public: A(int a = 0) {}private: int _a;}int main(){ A a = 10; return 0;} 我们可以看到“A a = 10;”,这个语句的意思是:用10来调用默认构造创建一个匿名对象,再调用拷贝构造赋给a; 我们称这种现象为:单参构造函数隐式类型转换。要注意只有构造函数为一个参数的时候才会进行; 如果想要禁止这种现象的出现,可以使用explicit关键字来修饰构造函数;e原创 2020-10-23 22:29:11 · 98 阅读 · 0 评论 -
C++类与对象——成员函数
目录类中的六种默认成员函数(一)构造函数(二)拷贝构造函数(三)析构函数(四)赋值运算符重载函数(五)const成员(六)取地址和const取地址操作符重载函数类中的六种默认成员函数 当我们定义了一个类,并且尚未给类中添加任何成员,此时为一个空类,但是看起来是空的,实际上编译器已经为我们隐式定义了六种默认的成员函数:构造函数、拷贝构造函数、析构函数、赋值运算符重载函数、取地址和const取地址操作符重载函数。 那么这六种成员函数都各自具备什么样的属性呢?下面我们来看一下:(一)构造函数1、构造原创 2020-10-19 00:16:42 · 419 阅读 · 0 评论 -
C++入门基础(三)
目录内联函数内联函数 概念:inline修饰的函数称为内联函数,编译器编译时会进行函数指令的展开,没有栈帧的开销,可以提高代码的效率。 使用局限:1、内联函数只针对比较简单的函数,针对复杂函数也不会展开,所以当代码很长或者有循环或递归的时候不适宜用内联函数;2、inline声明和定义放在一个地方,...原创 2020-06-21 10:32:27 · 201 阅读 · 0 评论 -
C++入门基础语法(二)——引用
引用原创 2020-06-16 21:21:13 · 137 阅读 · 0 评论 -
C++入门基础语法(一)
目录命名空间命名空间定义命名空间使用C++标准输入输出缺省参数全缺省参数半缺省参数函数重载函数重载概念函数重载原理命名空间 在C/C++实际开发过程中,一个项目可能有多个人来完成代码的编写,那么不可避免的会有一些变量和函数名会重复,C++中给了一个命名空间这样一个定义来完成对变量和函数的作用域范围的限制。命名空间定义namespace 名字{ 变量; 函数;}例如:namespace test{ int a = 0; void fun(){};}几点注意:1、可以嵌套定原创 2020-05-25 20:35:17 · 239 阅读 · 0 评论