- 博客(29)
- 收藏
- 关注
原创 Linux下git管理常用指令
git config --global user.email "邮箱"git config --global user.name "用户名"git config user.email "邮箱"git config user.name "用户名"
2025-03-05 21:58:29
358
原创 C++继承
继承其实就是对原本已经存在的类进行复用的过程,和函数的复用类似,同时也体现了面向对象编程效率高的方面之一。preson作为了基类以public的继承方法继承给了student派生类继承方式和访问限定符访问限定符有以下三种:public访问protected访问private访问而继承的方式也有类似的三种:public继承protected继承private继承类成员/继承方式public继承protected继承private继承public基类成员。
2024-10-11 00:21:47
1280
原创 C++中序列式容器和关联式容器
一般情况下,first就是key,second就是value,它们有着一一对应的关系,可以类比英汉字典。在C++的关联式容器中有:map、set、unordered_map、unordered_set等。序列式容器有:vector、list、deque、stack等。关联式容器的底层数据结构是树形结构和哈希结构这样的数据结构。序列式容器就是常说的线性的数据结构;
2024-09-24 12:19:53
239
原创 Linux下普通用户无法执行sudo指令
说明在/etc/sudoers文件中没有把xxx加入到可执行sudo指令的名单中,因此需要修改sudoers文件。2、找到 root ALL=(ALL )ALL ,并且在这一行下面加入哦普通用户就可以了。解决方法:1、vim /etc/sudoers (要用超级用户(root)执行)xxx(普通用户名字) is not in the sudoers file。
2024-07-25 23:52:03
453
原创 C++STL中的vector常用的API
vector是一个可以变长的类似数组的一个容器,而且可以像数组一样利用下标的方式访问数据,具有数组高效的地方;但是有的时候在插入数据的时候会因为扩容的问题,浪费掉很多的空间,而且在不是对数据进行的不是尾部处理的时候,时间复杂度也是相当的高,但是在面对尾部数据处理的时候在时间复杂度上就有很高的效率,并且扩容还会把全部的数据进行搬运,搬运(把数据移动到一个新的数组里面)就会浪费很多的时间。
2024-07-05 02:24:58
769
原创 C++STL中的string的常用API
string其实就是在堆山new出来的一个字符串数组通过,类包装、迭代器以及算法包装起来的一个容器模板。
2024-06-21 19:15:13
864
原创 C++的STL标准模板库
STL是C++的一个标准模板库,里面保存了如string、vector、list等容器,而STL其中一个组件就是容器,STL的组成部分由以下六大组件组成:其中就已经包括了常见的数据结构与算法,这也是方便开发者使用,进一步体现了泛型编程和面向对象编程的思想。
2024-06-21 16:02:40
145
原创 C/C++内存分布
映射方式,用于装载一个共享的动态内存库。用于程序运行时动态内存分配,堆是可以上增长的。课程如果没学到这块,现在只需要了解一下)创建共享共享内存,做进程间通信。返回值等等,栈是向下增长的。存储全局数据和静态数据。
2024-06-16 21:15:37
211
原创 为什么C++类里面的静态成员变量要在类外初始化
静态成员变量的生命周期与程序的生命周期相同,它们在程序开始时被创建,在程序结束时被销毁。因此,它们不能在类的构造函数中初始化,因为构造函数是为每个对象实例调用的,而静态成员变量在对象创建之前就已经存在。:在C++中,静态成员变量的链接属性是外部的(extern),这意味着它们的定义必须在类定义之外。在类内部初始化静态成员变量会导致访问权限问题,因为类的内部代码可能没有足够的权限来执行全局初始化。在C++中,类的静态成员变量需要在类外初始化的原因与C++语言的设计和内存管理有关。
2024-06-12 16:26:56
502
原创 C++深浅拷贝
在C++的深浅拷贝中,都是对对象的拷贝问题,只是在面对资源申请的时候,需要比较重视这个问题,因为这涉及到内存泄漏、多次析构的问题等。对于深拷贝来说,也会拷贝成员,但是拷贝后的对象管理的空间都是独立的,例子。
2024-06-11 20:16:40
215
原创 位操作符,按位与,按位或,亦或
算数右移:右边移动一位,左边就会空出一位,空出的位置是符号位补原来的的符号位的数是1补1,是0补0。操作符中的&(按位与),|(按位或),^(按位异或)“对象也是二进制的补码”操作符中的~,二进制中的数全部取反包括符号位“对象也是二进制的补码”逻辑右移:右边移动一位,左边就会空出一位,空出的位置补0。补码→原码:1、补码-1,符号位不变其它位取反。| (按位或):有1取1,两个都为0才取0。正数的原 反 补码都是一样的(最高位是0)&(按位与):有0取0,两个都为1才取1。
2024-06-06 01:48:25
280
原创 C++的内联函数和宏的关系
因为在函数调用中,会有资源的消耗,比如说函数调用是要创建栈帧的,假设一个函数要被频繁的调用,那就会造成资源消耗很大,为了解决这一的问题,C++就有了内联函数这个概念,它可以让程序对资源的消耗没有大,提高程序执行时的效率。对于C语言来说,为了解决上述的问题,就是使用宏来解决。被关键字inline修饰的函数就是内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。2、内联函数注意点1、内联函数的调用不适合用于代码段很长的函数。2、内联函数的调用也
2024-06-01 19:25:09
234
原创 被“const“修饰的指针
特点:指针常量,字面理解说明这个指针是一个常量,那么常量就是不可以被修改的,意思就是说该指针所指向的那块地址空间是不允许被修改的。特点:常量指针所指向的那个变量是不可以通过该指针修改的,但是变量自身可以修改。总结:对于这两者很容易搞混,如下是个人的记忆技巧。
2024-05-18 17:14:14
157
原创 C++基础auto与范围for
auto它是就可以自动推演变量的类型的,但是在这之前有一个大前提,那就是必须要有一个初始化的变量,因为。**语法:**for(auto 迭代对象 :迭代的范围)这样相比之前的普通的for写起来就会轻松很多!auto 变量名 和 auto。2、auto在推导指针变量的时候。auto 变量名称 +初始化。变量名 的结果是一样的。
2024-05-18 16:49:54
343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人