- 博客(19)
- 收藏
- 关注
原创 Linux-进程
1.进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。2.维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,换句话说,Z状态一直不退出,PCB一直都要维护。需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。1.PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。
2024-09-29 15:18:57
778
原创 多态常见习题
静态成员函数与具体对象无关,属于整个类,核心关键是没有隐藏的this指针,可以通过类名::成员函数名 直接调用,此时没有this无法拿到虚表,就无法实现多态,因此不能设置为虚函数,不是因为其不能被重写。首先func函数构成了多态(虚函数重写了,也是使用的父类的指针调用的),最后发生的情况为,func函数的定义为父类的定义,而函数体为子类的(重写只是重写了函数体)17. 假设A类中有虚函数,B继承自A,B重写A中的虚函数,也没有定义任何虚函数,则(D )答:在虚函数的后面写上 =0 ,则这个函数为纯虚函数。
2024-07-14 12:21:07
651
原创 C++【多态】
多态为在继承关系中不同的类对象去调用同一函数,产生了不同的结果。比如现在有两个类为Person和Student,Student继承了Person。Person买票为全价,Student买票为半价。在1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类要对基类的虚函数进行重写(注意区分重写与重定义,重定义为隐藏public:cout << "成人买票全价" << endl;public:cout << "学生买票半价" << endl;Person p1;
2024-06-23 21:14:29
807
原创 C++中list容器
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且其可以前后双向迭代2. list的底层是双向链表结构3.与其他的序列式容器相比(array,vector,deque),list通常4.与其他序列式容器相比,list和forward_list(单向链表)最大的缺陷是不支持任意位置的随机访问,要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置。
2024-06-11 13:56:20
462
原创 Vector容器
如果pos刚好是最后一个元素,删完之后pos刚好是end的位置,而end位置是没有元素的,那么pos就失效了。erase删除pos位置元素后,pos位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代器不应该会失效,就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃。在以上操作完成之后,如果想要继续通过迭代器操作vector中的元素,
2024-05-30 13:28:01
633
原创 C++内存管理
num_byte为要申请的空间大小,需要我们手动的去计算,如int *p = (int *)malloc(20*sizeof(int)),如果编译器默认int为4字节存储的话,那么计算结果是80Byte,一次申请一个80Byte的连续空间,并将空间基地址强制转换为int类型,赋值给指针p,此时申请的内存值是不确定的。但这并不是他们之间最重要的区别,用于对动态内存进行扩容(及已申请的动态空间不够使用,需要进行空间扩容操作),ptr为指向原来空间基址的指针, new_size为接下来需要扩充容量的大小。
2024-04-22 13:22:11
1592
原创 类和对象(下)
初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。注:1.每个成员变量只能在初始化列表中出现一次,即只能初始化一次2.以下成员必须放在初始化列表中进行初始化:1)const成员变量2)引用成员变量3)没有默认构造函数的自定义类成员3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。 4.成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中
2024-04-18 09:44:31
1631
1
原创 C++运算符重载
当返回对象是一个局部变量或者临时变量,出了当前函数作用域就销毁了时,不能使用引用返回,因为引用对象在函数栈已经销毁了。除了作用域,返回对象还没析构的时候可以使用引用返回,减少拷贝为了增强C++代码的可读性,引入了运算符重载,运算符重载是具有特殊函数名的函数,具有返回类型,函数名以及参数。其函数名为:operator+需要重载的运算符函数原型:返回类型 operator操作符(参数)
2024-04-16 13:48:43
496
1
原创 数据结构排序汇总
首先选出开始位置为关键元素key,将比它大的元素放到右边(右侧找小),比它小的元素放到其左边(左侧找大),最终将key放到中间位置。遍历数组选出最大的元素和最小的元素,将其固定在头,尾位置。之后缩减遍历的区间,继续找第二大,第二小的元素,再固定到两边。先将最大的值与最后一个位置的值进行交换,将最后一个排除在堆外,然后进行堆的调整,选出第二大的元素,再进行交换。将元素依次向后比较,选出最大的挪到最后面,缩减比较区间,再选出第二大的元素固定到后面。时间复杂度:o(n^2)时间复杂度:o(n^2)
2024-03-26 15:11:49
249
原创 合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目请你nums2到nums1中,使合并后的数组同样按排列(nums1的初始长度为m + n)。
2024-03-13 10:30:43
226
原创 C++入门
此时两部分内容中都含有结构体Node和min变量,重复命名了,但现在它们处于不同的命名空间中,故使用时只需标明其所在的域就可以正常使用。(命名空间的名字不能相同)C语言没办法解决命名冲突问题(我们自己定义的名字和库中的名字冲突;项目组中,多个人定义的名字冲突),故C++提出了namespace来解决。或者也可以使用全局展开:(一般情况不建议全局展开)域作用限制符(::)
2024-03-09 11:01:46
179
原创 删除有序数组中的重复项
若快指针与前一个位置的内容相同则继续往前走,slow不变;若快指针与前一个位置的内容不同则将快指针位置的内容给慢指针,然后慢指针向后移动一步,快指针继续走,直到数组最后。因为第一个元素一定是要的,所以起点从1开始。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。
2024-03-07 14:17:48
314
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人