- 博客(36)
- 收藏
- 关注
原创 【C++教程从0到1入门编程】第十三篇:STL中list类的模拟实现
【代码】【C++教程从0到1入门编程】第十三篇:STL中list类的模拟实现。
2024-03-26 19:45:09
260
原创 【C++教程从0到1入门编程】第十一篇:STL中list类的初识
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
2024-03-14 19:44:11
431
原创 【C++教程从0到1入门编程】第十篇:STL中Vector类模拟实现
它是一种“浅拷贝”,因为它只是按字节逐个复制源内存块的内容到目标内存块,而不会关心内存块中所包含的数据的结构或者类型。reserve开辟容量空间时开辟的新空间不能使用memcpy把旧空间的数据拷贝过去,要使用循环赋值过去,因为memcpy是浅拷贝,浅拷贝最后会导致释放旧空间新空间的指针指向一块已被释放的空间,造成程序崩溃。只会复制指针的值,而不会复制指针所指向的内容。这样,如果源内存块和目标内存块中的指针指向相同的内存区域,那么修改其中一个内存块中的内容也会影响到另一个内存块,因为它们共享相同的数据。
2024-03-14 17:21:00
429
原创 【C++教程从0到1入门编程】第九篇:STL中Vector类
1.vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2024-03-12 20:05:14
1055
原创 【C++教程从0到1入门编程】第八篇:STL中string类的模拟实现
此时引出了概念浅拷贝,浅拷贝:也称位拷贝,编译器只是将对象中的值拷贝过来。如果对象中管理资源,最后就会导致多个对象共享同一份资源,当一个对象销毁时就会将该资源释放掉,而此时另一些对象不知道该资源已经被释放,以为还有效,所以 当继续对资源进项操作时,就会发生发生了访问违规。要解决浅拷贝问题,C++中引入了深拷贝。那么深拷贝呢?
2024-03-10 10:57:13
561
原创 【C++教程从0到1入门编程】第六篇:C++模板初阶
可以看到三种数据都被交换了,此处的typename也可以用class来代替。在编译器中,当同时遇到自己写的和模版中给的时候,会先调用自己所写的!如果在代码中加上Add(a,c)结果会怎么样呢。普通的函数会进行自动转换,但是模版不可以!而且这两次调用的函数地址不同。
2024-03-02 20:21:33
408
原创 Java——键盘输入
其中Scanner的函数常见的为.nextxxx,xxx为数据类型,若类型为字符串,需要使用.nextLine或者.next。.next相当于C/C++中的scanf和cin,遇到空格或回车就停止。.nextLine相对于C/C++中的gets。从Java5开始,Java引入了Scanner类作为输入的类型。由上可知,Java的输入是以流的方式进入,只能以字符串的形式进入,但Scanner类支持以数据类型读取内容。由于我们是使用Scanner这个类进行输入控制,因此首先我们需要构造出这个类的对象。
2023-10-21 19:53:35
133
1
原创 【C++教程从0到1入门编程】第四篇:C++类和对象(下篇)
一、再谈构造函数1.构造函数体赋值在创建对象时,编译器通过调用,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是,构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。2. 初始化列表初始化列表:以一个开始,接着是一个以分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次类中包含以下成员,必须放在1.引用成员变量2.const成员变量。
2023-09-13 20:02:05
148
2
原创 C++ 友元
在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术就是让一个函数或者类 访问另一个类中的私有成员friend。
2023-09-12 18:35:28
120
1
原创 KY258 日期累加
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。设计一个程序能计算一个日期加上若干天后是什么日期。输出m行,每行按yyyy-mm-dd的个数输出。
2023-09-10 15:57:38
97
2
原创 KY222 打印日期
可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。给出年分m和一年中的第n天,算出第n天是几月几号。
2023-09-10 15:33:27
87
2
原创 日期类(C++必学)
相信这个大家都见过,当我们学完C++的类和对象后,我们就可以尝试着写一下。1.可以输入一个合法的日期(若没有输入,则进行默认赋值)第一步:我们要定义一个日期类,包括了成员函数的声明和成员变量的定义。2.在日期上加上一定的天数(减少一定的天数)第三步:对成员函数进行测试和优化。3.将两个日期进行比较以及加减。第二步:我们要定义成员函数。
2023-09-09 17:22:02
66
2
原创 数字如何变成字符类型
在编程中,我们用的符号一般来自ASCII码,它是用一个字节的低七位来表示一个字符的编码, 2^7 =128 ,最高位是 0 ,所以,用 ASCII 码可表示 128 个字符那么在ASCii码中‘1’的对应编码是49的二进制码,但是我们的数字1,就等于1呀,所以为了由原来的‘1’实际上就是49的二进制变成现在的1对应的二进制1,只好用49-48=1了。就可以了简而言之就是1与’1’之间差个48个不同的ascii码,就像a与A相差32个ascii码,同理,从int类型变成char类型,就需要加上一个’0’了。
2023-08-27 09:52:13
133
原创 【C++编程从0到1】第二篇:类和对象(上篇)
本文仅仅简单介绍了类和对象(上)的使用,而类提供了大量能使我们快速便捷地处理数据的成员函数和成员变量。
2023-07-17 20:04:14
123
2
原创 【C++教程从0到1入门编程】第一篇:C++入门
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。
2023-07-14 20:41:19
189
3
原创 VS的使用过程中scanf报错的最有效解决办法!
D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems里的(因为不同版本路径可能不同,所以最方便的就是去安装路径之后搜索newc++file.cpp这个文件)当我们第一次使用vs的过程中,不难发现,当使用scanf时,总会出现如上的报错,那么我们该怎么办呢?1.找到我们安装VS的目录,这里我用2022版的进行演示(所有版本通用)但每次打开重新输入便显得特别繁琐,那么下面就是一劳永逸的办法。
2023-03-20 17:38:47
244
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人