自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 string模拟部分实现(字符串) 部分OJ题练习

string模拟实现中出现的个别问题:下述string类没有显式定义其拷贝构造函数与赋值运算符重载,此时编译器会合成默认的,当用s1构造s2时,编译器会调用默认的拷贝构造。最终导致的问题是,s1、s2共用同一块内存空间,在释放时同一块空间被释放多次而引起程序崩溃,这种拷贝方式,称为浅拷贝。浅拷贝:也称位拷贝,编译器只是将对象中的值拷贝过来。如果对象中管理资源,最后就会导致多个对象共享同一份资源,当一个对象销毁时就会将该资源释放掉,而此时另一些对象不知道该资源已经被释放,以为还有效,所以 当继续对资源进项

2021-12-07 18:52:38 577

原创 初学STL——剖析string

C语言中的字符串:C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。C++标准库中的string类:在使用string类时,必须包含#include头文件以及using namespace std;1. string是表示字符串的字符串类2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3. st

2021-12-06 23:25:31 378 2

原创 初学STL——剖析list

什么是STL:是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。STL的版本:主要有四个版本,而我们只需熟知了解两个版本。1.原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。2.P. J.版本由P. J. Plauger开发,继承自HP版本,

2021-12-03 13:16:20 338

原创 C++(模板初阶)

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。在C中我们实现交换函数:1.代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数。2.代码的可维护性比较低,一个出错可能所有的重载均出错。void Swap(int& left, int& right){ int temp = left; left = right; right = temp; } void Swap(double& left, double&am

2021-11-30 13:59:16 738

原创 C/C++的内存管理

C/C++的内存分布:分布说明:1. 栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。 3.堆用于程序运行时动态内存分配,堆是可以上增长的。 4. 数据段–存储全局数据和静态数据。5. 代码段–可执行的代码/只读常量。C语言中动态内存管理方式:1.malloc函数:malloc(size_t size)函数有一个参数,即要分配的内存空间的大小。void main

2021-11-24 09:07:43 85

原创 C++类与对象(3)

在谈构造函数:构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。Date(int year, int month, int day) : _year(year), _month(month), _day(day)注意:1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)2. 尽量使用初始化列表初始化,因

2021-11-23 13:09:29 300

原创 C++ 类与对象(2)

一.类的六个默认函数构造函数:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。构造函数的特性:构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是初始化对象。如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。 无参的构造函数和全缺省的构造函数都称为默认构造函数,并且

2021-11-23 12:22:43 54

原创 C++类与对象(1)

类的定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。类的访问限定符及封装C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。访问限定符的说明:public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问(此处protected

2021-11-01 21:12:58 64

原创 C++入门

一.命名空间在C++中,变量、函数、类都是大量存在的,这些变量、函数、类的名称将都存在于全局作用域中,可能会导致很多冲突。简单的来说namespace关键字的出现就是针对这种问题的,以避免命名冲突或名字污染。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。//命名空间的用法namespace Myspace { void func() { cout << "This is my space" <<

2021-10-26 21:02:45 101

原创 Linux 常见指令和权限的理解(1)

Linux 常见指令和权限的理解基础指令:目录相关指令,普通文件指令,匹配查找指令,权限相关指令。指令使用规则:指令名称 [操作选项] [操作对象]指令名称:就是一个指令的名字 。 例如:ls 查看文件内容(该命令列出该目录下的所有子目录与文件)操作选项:用于完成某个指令的子项 。 例如:ls -l 查看当前文件的具体信息操作对象:指定要操作的对象。 例如:ls -l install 查看指定文件install中的内容ls指令 浏览目录 ——展示一个文件夹的内部信息-a

2021-10-21 21:21:24 67

原创 数据在内存中的存储

什么是内存?内存可以想象成一个大走廊,走廊上有很多房间,每个房间有1个字节那么大,每个房间上面都有一个门牌号,这个门派号聪0开始依次递增,称为地址。内存能够支持“随机访问” 内存必须要申请了才能使用,如果未申请就使用,此时就是“未定义行为”整数在内存方面有两个个核心:1.原码补码问题原码:一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。例如:假设机器数的位数是8,那么:[+17]原=00010001 [-39]原=10100111值得注

2021-06-08 17:49:12 75 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除