随笔分类 - C++
摘要:列表初始化 在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization)。这种初始化方法可以用来初始化内置类型、自定义类型以及聚合类型。 示例代码: /*AVL 树节点类*/ struct TreeNode{ int val{}; i
阅读全文
摘要:string类型操作 字符串切割 str.substr(索引,切割的个数) -> 返回字符串 注意:第二个参数为切割的个数 string buf = "abcdefg"; buf.substr(0, 2); // 结果为 "ab" buf.substr(1, 3); // 结果为 "bcd" 按字符
阅读全文
摘要:char*类型与vector<char> 类型的相互转换 很多时候需要使用动态的字符串,但是char*难以完成相应的扩容操作,而动态数组vector则可以简单地完成,结合二者特性就可以完成动态字符串,同时,也需要二者类型的相互转换: char* 转vector<char> vector<char>
阅读全文
摘要:文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件操作可以将数据持久化 C++中对文件操作需要包含头文件 "fstream" 文件类型分为两种: 文本文件:文件以文本的ASCII码的形式存储在计算机中 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接
阅读全文
摘要:多态 基本概念 多态是C++面向对象三大特性之一 多态分为两类 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定——编译阶段确定函数地址 动态多态的函数地址晚绑定——运行阶段确定函数地址 动态多态满足条
阅读全文
摘要:C++内存空间的布局 每个应用都有自己独立的内存空间,其主要分为4个区域 代码区(代码段) 用于存放代码所转换成的机器码 数据段(全局区) 用于存放全局变量等 栈空间 每调用一个函数,就会给它分配一段连续的内存地址,函数执行完毕会自动回收这段占空间 自动分配和回收 堆空间 需要主动申请和释放 堆空间
阅读全文
摘要:类和对象 C++面向对象的三大特性为:封装、继承、多态 封装 成员变量私有化,提供公共的getter和setter给外界去访问成员变量 封装的意义 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 类在设计时,可以把属性和行为放在不同的权限下,加以控制 访问权限有三种: 1.pu
阅读全文
摘要:list容器 简介 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点组成,节点可以在运行时动态生成。每个节点包括两部分:一个是存储数据元素的数据域,另一个是存储下一节点的指针域。 相较于vector的连续线性空间,list就显得复
阅读全文
摘要:deque 容器 deque (读作deck)是“doble-ended-queue”的缩写,和vector一样都是STL的容器 deque是双端数组,而vector是单端 单端与双端:vector 在首部插入数据时,会在末端开辟新位置,然后整体移动过去,而deque在首部插入数据时,能够直接在首部
阅读全文
摘要:STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。 STL 从广义上讲分为三类:algorithm(算法)、container(容器)和 iterator(迭代器),容器和算法通过迭代器可以进行无缝连接。几乎所有的代码都采用
阅读全文
摘要:引用 函数的形参还有引用传参这一形式 引用:是一个变量的别名,它是某个已经存在的变量的另一个名字。 引用创建后,不可更改 因不可更改,所以必须初始化 必须初始化,所以不可为空(不能被修改) 语法: 常引用 const int &ref const修饰的引用无法修改值 const 引用的特点 可以指向
阅读全文
摘要:结构体 结构体(struct),是一种用户自定义复合数据类型,可以包含不同类型的不同成员 语法: struct Student { string name; int age; string sex; }; Student stu; stu = {"张三", 20, "男"}; cout << "名字
阅读全文
摘要:const常量指针 const是C++关键字,译为常量,const指针即为常量指针。 分为三类 指向const的指针 const指针 指向const的const指针 指向const的指针 表示指向区域的数据是不可变的,但是可以更换指向 语法(将const卸载*之前): const 数据类型 * 指针
阅读全文
摘要:数组元素的移除 核心思路:创建一个新的内存空间存储移除后的数组,再将原数组delete释放,再将指针指向新数组。 cout << " 数组元素的移除 " << endl; //cout << deleteArrByIndex(0, arr11) << endl; // 示例数组 int * pArr
阅读全文
摘要:动态内存分配 动态内存分配:即由程序员手动的进行内存空间的分配、内存空间的释放的内存管理操作 C++代码中,变量、数组等对象的创建,是由C++自动分配内存的,称之为(自动)静态内存分配 (自动)静态内存管理,不会进行内存空间的自动清理。(无垃圾回收机制) 需要手动的管理内存,即手动分配,用完清理 n
阅读全文
摘要:指针 指针具有强大的能力,其本质是协助程序员完成内存的直接操作 指针: 特定类型数据在内存中的存储地址,即内存地址 指针只是一个逻辑概念,其实际应用是:指针变量 语法 * 符号有两种含义: 声明时:*p ,表示变量p,是指针变量,存的是内存地址 使用时:*p, 表示取指针p执行内存区域的数据 &符号
阅读全文

浙公网安备 33010602011771号