- 博客(17)
- 收藏
- 关注
原创 迭代器:iterator
本质就是指针封装成一个类,然后这个类实现指针的所有操作作为自己的成员函数,让这个类使用起来和指针一样。还有一种方法使用迭代器(迭代器的范围是[a,b}左闭右开的)迭代器加上const和普通对象一样限制了迭代器的权限。反向迭代器:reverse_iterator。提供了一种统一的方式访问和修改容器的数据。c++11还提供了一种方法(范围for)迭代器分为正向迭代器和反向迭代器。正向迭代器:iterator。我们首先想到的是用下标和。有人会问迭代器是什么?底层也是用迭代器实现的。
2023-05-24 23:03:19
85
原创 new与delete
在c语言我们学习了malloc和free系列函数,为什么c++还要学习new和delete呢可想而知new/delete肯定有malloc/free不能替代的功能这个功能就是调用自定义函数的构造函数和析构函数在学习c语言时,我们建立一个链表都要定义初始化函数,而且还要自己手动调用初始化函数,但是new在定义自定义类型时,只要我们写了构造函数,让编译器知道怎么初始化自定义函数,那么我们就不需要自己手动调动构造函数了。
2023-05-23 20:01:15
87
原创 linux环境基础开发工具
查找软件:yum list|grep 文件名如果显示nothing to do则表示早已经安装好了安装软件:yum install 文件名卸载文件:yun remove 文件名。
2023-05-23 10:00:10
107
原创 linux文件权限
chmod u-权限,g-权限,o-权限 文件、目录。1,直接用root改 chgrp 用户 文件名。1,直接用root改 chown 用户 文件名。文件,目录的文件权限是默认权限减去权限掩码。但那是必须要有root级别的权限才能更改。但那是必须要有root级别的权限才能更改。chgrp:增加文件的所属组成员。设置默认创建目录,文件的初始权限。默认普通文件的初始权限是666。默认目录文件的初始权限是777。chown:更改文件的拥有者。chmod 修改文件权限。一个文件有十个权限位。
2023-05-23 08:44:34
86
原创 linux常见指令以及权限理解
语法: ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-d 将目录象文件一样显示,而不是显示其下的文件。如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件-l 列出文件的详细信息。-n 用数字的 UID,GID 代替名称。(介绍 UID, GID)
2023-05-21 10:46:52
78
原创 函数模板与类模板
函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。用不同类型的参数使用函数模板时,称为函数模板的实例化。通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有一个T,那么该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型。2. 显式实例化:在函数名后的<>中指定模板参数的实际类型。类模板:我们用一个可变化的类型来实现类,达到我们所需的需求。模板类:类型名和类型是不一样的。
2023-05-18 20:13:42
55
原创 友元函数,友元类和内部类
比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直 接访问Time。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。友元函数可以在类定义的任何地方声明,不受类访问限定符限制。如果B是A的友元,C是B的友元,则不能说明C时A的友元。友元函数可访问类的私有和保护成员,但不是类的成员函数。一个函数可以是多个类的友元函数。
2023-05-16 09:18:51
61
原创 默认成员函数之拷贝复制函数
1, 赋值重载也就是说“=”编译器会默认生成,但是只能实现浅拷贝,如果要实现深拷贝,那么就需要我们自己写,自定义成员也会调用它的赋值重载。2,赋值重载函数不能写成全局的,因为类内会自动生成一个默认赋值重载函数,会出现函数重定义不知道调用哪一个。3,缺省值一般在声明里写。
2023-04-29 17:53:19
53
原创 构造,析构函数
当类中没有写构造函数时,编译器也会给类中(内置类型)成员一个随机值(有些编译器可能会给0,一般认为给的是随机值),但是如果是自定义类型那么编译器会自动调用它的构造函数。默认构造函数有三种方式:1.系统给定 2.无参默认构造函数 3.全缺省默认构造函数。1.缺省值:缺失值是给默认构造函数用的(这是给无参默认构造函数的)2无参和全缺省只能用一个。
2023-04-22 21:45:35
64
原创 内存对齐!
4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。3. 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。如果类中没有成员,那么sizeof(类)等于1,这个字节是用来识别类的对象的。注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。类的对齐只关注类的成员,不关注类的成员函数。VS中默认的对齐数为8。
2023-04-22 18:21:38
46
原创 内敛函数的应用
3.类里的函数默认是内联函数,但是函数代码过长,编译器也不会把它当成是内联函数。1.不用开额外的空间,提高了效率。2.把声明和定义都放在头文件里。
2023-04-22 18:09:53
85
原创 引用的特性与使用场景(相较指针)
这个就更好理解了,就是刘备的外号叫“大耳刘”,我们就不能叫它“卧龙”了,因为“卧龙”是诸葛亮的外号。第二个输出随机值是因为在函数结束后,函数栈帧被swap函数的栈帧覆盖了,所以n是随机值。那么count函数结束,栈帧被销毁,这个临时变量就是n是别名,但是n已经被销毁了,引用是一个变量的别名,一个变量的多次引用相当于给它取了多个外号都是指同一块空间。count函数结束,栈帧被销毁,n的值是通过一个临时变量来传给ret变量。所以这时候的n是不确定的,如果栈帧被清理,那么n的值就是不确定的。
2023-04-18 10:27:39
62
原创 用十几种排序方法来帮你实现数据的排序(以升序为例)(除了快排和归并排序)
基本思想:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。,之后缩小gap,再排序,直到gap=1,最后在排序,就得到了排序好的数组了。1. 希尔排序是对直接插入排序的优化。
2023-04-17 19:17:22
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人