- 博客(56)
- 收藏
- 关注
原创 VScode加cmake 调试教程之tasks.json和launch.json的配置
launch.json和tasks.json都是Visual Studio Code编辑器的配置文件,主要用于启动和管理你项目的构建以及调试任务。配置好这两个文件之后,不需要在终端使用命令行去一步步编译和运行,比如cmake、make、./main等命令,可以直接打断点运行调试。
2025-06-13 00:06:57
836
原创 cmake使用教程(二)
printf("我是一个程序猿, 我不会爬树...\n");++i)!!\n");return 0;在程序的第七行对DEBUG宏进行了判断,如果该宏被定义了,那么第八行就会进行日志输出,如果没有定义这个宏,第八行就相当于被注释掉了,因此最终无法看到日志输入出(上述代码中并没有定义这个宏为了让测试更灵活,我们可以不在代码中定义这个宏,而是在测试的时候去把它定义出来,其中一种方式就是在gcc/g++命令中去指定,如下:在。
2025-06-10 21:51:46
779
原创 cmake制作动态库、静态库并使用
温馨提示:target_link_libraries 和 link_libraries 是 CMake 中用于链接库的两个命令,都可以用于链接动态库和静态库,但它们的使用场景和功能有所不同。功能用于指定一个目标(如可执行文件或库)在编译时需要链接哪些库。它支持指定库的名称、路径以及链接库的顺序。语法优点更精确地控制目标的链接库。可以指定库的不同链接条件(如调试版本、发布版本)。支持多个目标和多个库之间的复杂关系。更加灵活和易于维护,特别是在大型项目中。示例功能。
2025-06-10 20:11:52
642
原创 cmake使用教程(一)
CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,
2025-06-10 15:30:41
1023
原创 vscode与cmake在linux下的配置使用
选择linux系统的包,指令集选择出现特殊提示,yes处按下回车之后在终端中输入 code ,回车打开vscode软件,打开成功后可以安装中文、c/c++、cmake等基础插件,如下所示:此时vscode安装完成,最后想编译c++,还必须安装编译器和调试器安装成功后可通过查看版本号查看是否安装成功。
2025-06-10 00:26:59
314
原创 VMware虚拟机中安装Ubuntu以及与Windows的数据拖拽互通
把注释符号 ‘#’ 删除,保存文件并重启虚拟机。之后就可以在虚拟机和物理机之间拖拽复制文件。发现它已经成功启动了。此时你还需要打开/etc/gdm/custom.conf配置文件。Ubuntu安装完成之后不要装VMware tools。2.联网安装VMware tools。1.卸载open-vm-tools。如果发现它的状态是disable。
2025-06-03 21:52:44
352
原创 map/ multimap容器
map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序。
2025-06-02 16:09:06
498
原创 list容器
List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插elem元素的拷贝,返回新数据的位置。//删除[beg,end)区间的数据,返回下一个数据的位置。//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//删除pos位置的数据,返回下一个数据的位置。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//删除容器中所有与elem值匹配的元素。
2025-06-02 14:35:25
948
原创 queue 容器
(First In First Out,FIFO)的数据结构,它有两个出口。//queue采用模板类实现,queue对象的默认构造形式。队列容器允许从一端新增元素,从另一端移除元素。判断队是否为空 --- empty。返回队头元素 --- front。返回队尾元素 --- back。返回队列大小 --- size。队列中进数据称为 ---队列中出数据称为 ---//从队头移除第一个元素。//返回最后一个元素。//判断堆栈是否为空。入队 --- push。出队 --- pop。
2025-06-01 21:13:52
216
原创 stack容器
stack是一种(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 ---push栈中弹出数据称为 ---pop。
2025-06-01 21:10:02
277
原创 STL初识
学习目标:vector中存放自定义数据类型,并打印输出//自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++) {//放对象指针//创建数据it!= v.end();test02();return 0;
2025-06-01 14:04:55
483
原创 C++类模板
解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制。总结:主流的解决方式是第二种,将类模板成员函数写到一起,并将后缀名改为.hpp。当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型。总结:类模板中的成员函数并不是一开始就创建的,在调用时才去创建。建立一个通用类,类中的成员 数据类型可以不具体制定,用一个。T --- 通用的数据类型,名称可以替换,通常为大写字母。总结:如果父类是类模板,子类需要指定出父类中T的数据类型。
2025-05-31 16:54:55
834
原创 C++文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过C++中对文件操作需要包含头文件- 文件以文本的形式存储在计算机中- 文件以文本的形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作。
2025-05-31 14:23:57
228
原创 C++多态与虚函数
总结:一个继承类的基类如果包含虚函数,那个这个继承类也有拥有自己的虚表,故这个继承类的对象也包含一个虚表指针,用来指向它的虚表。所以当父类指针指向子类对象时(多态),调用的是子类已重写的虚函数。
2025-05-30 19:27:35
870
原创 C++继承
继承是面向对象三大特性之一例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处普通实现:继承实现:总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。继承的语法:继承方式一共
2025-05-30 15:08:35
924
原创 C++友元
生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为友元的三种实现全局函数做友元类做友元成员函数做友元。
2025-05-29 20:03:55
205
原创 C++对象模型和this指针
每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针。在类的非静态成员函数中返回对象本身,可使用return *this。成员属性声明时加关键字mutable后,在常函数中依然可以修改。c++通过提供特殊的对象指针,this指针,解决上述问题。this指针是隐含每一个非静态成员函数内的一种指针。如果用到this指针,需要加以判断保证代码的健壮性。在C++中,类内的成员变量和成员函数分开存储。
2025-05-29 19:45:47
275
原创 对象的初始化和清理
生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。
2025-05-29 18:12:55
1274
原创 C++封装
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。类在设计时,可以把属性和行为放在不同的权限下,加以控制。将所有成员属性设置为私有,可以自己控制读写权限。在设计类的时候,属性和行为写在一起,表现事物。将属性和行为作为一个整体,表现生活中的事物。在C++中 struct和class唯一的。对于写权限,我们可以检测数据的有效性。struct 默认权限为公共。class 默认权限为私有。将属性和行为加以权限控制。设计一个圆类,求圆的周长。private 私有权限。
2025-05-29 15:03:33
304
原创 C++函数重载
函数名可以相同,提高复用性同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下cout << "func 的调用!" << endl;cout << "func (int a) 的调用!" << endl;cout << "func (double a)的调用!" << endl;cout << "func (int a ,double b) 的调用!" << endl;
2025-05-29 12:46:20
184
原创 C++引用
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。总结:通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单。函数传参时,可以利用引用的技术让形参修饰实参。作用:引用是可以作为函数的返回值存在的。常量引用主要用来修饰形参,防止误操作。引用在初始化后,不可以改变。在函数形参列表中,可以加。用法:函数调用作为左值。可以简化指针修改实参。
2025-05-29 12:37:51
314
原创 C++基础入门
所谓数组,就是一个集合,里面存放了相同类型的数据元素**特点1:**数组中的每个数据元素都是相同的数据类型**特点2:**数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};
2025-05-28 14:21:05
1223
原创 C语言栈详解
栈(Stack)是一种后进先出(LIFO, Last In First Out)的线性数据结构。它只允许在一端(栈顶)进行插入和删除操作。常见于函数调用、表达式求值、括号匹配、撤销操作等场景。在C语言中,常用顺序表(动态数组)实现栈。每个栈结构体包含:数据区(动态数组)栈顶指针容量// 数据类型定义// 栈结构体// 动态数组int top;// 栈顶指针,指向栈顶元素的下一个位置// 当前容量} ST;栈是一种常用的数据结构,适合需要后进先出处理的场景。
2025-05-27 16:40:12
319
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人