- 博客(33)
- 收藏
- 关注

原创 Linux下的基础开发工具vim/gcc/g++/gdb
文章目录前言vimgcc/g++初步了解gcc预处理编译汇编链接动态链接静态链接各自优缺点g++gcc/g++注意事项gdb前言学习Linux,少不了在Linux环境下做开发以及编写代码,就不得不得熟悉一下Linux下的这些基础开发工具了在windows下像vs系列都是集编辑器、编译器、调试器等为一体的IDE环境,而linux下编辑、编译调试代码都需要不同的工具,下面来具体了解一下linux环境的基础开发工具。vimvim是linux下多模式的编辑器,支持语法高亮、正则表达式、可视化操作
2022-03-05 22:08:25
11302
90
原创 十道二叉树面试题,对二叉树理解更进一步
学习二叉树有一个很重要的思想就是分治(将一个大问题划分为最小规模的子问题),常用方法之一就是递归,而递归是很抽象的,当对递归过程不理解时,建议多画图将递归过程实例化,拒绝人脑压栈...
2022-05-06 16:01:52
3291
41
原创 【搜索二叉树】迭代+递归实现&&K模型和KV模型
本篇文章将会介绍搜索二叉树的概念和模拟实现,以及它的应用Key模型和Key/value模型,简写为K模型和KV模型。
2022-05-02 11:59:35
1525
21
原创 C++继承,万字笔记简单易懂
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类(基类)特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。在继承之前一般都是函数的复用,而继承是类层次的复用。
2022-04-13 14:42:56
6583
46
原创 【C++】优先级队列priority_queue模拟实现&&仿函数
详细介绍priority_queue优先级队列的模拟实现,以及基础仿函数的介绍使用
2022-04-07 15:30:55
1654
38
原创 【C++】STL中stack和queue的模拟实现&&deque讲解
stack和queue的底层分析以及模拟实现,deque的讲解和他们的优缺点分析
2022-04-02 17:39:14
2295
56
原创 C++每日一练——排序子序列&&各种翻转字符串
文章目录排序子序列题目要求思路分析排序子序列题目要求牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2思路分析首先子序列是非递增或是非递减的:递增:1 2 3 4 5 6递减:6 5 4 3 2 1
2022-03-24 19:09:56
3472
45
原创 C++每日一练——组队竞赛&&两数相加
文章目录🍎组队竞赛🍉题目要求🍉思路分析🍉C++代码🍎删除公共字符串🍉题目要求🍉思路分析🍉C++代码🍑链表的两数相加🍑字符串相加🍎组队竞赛🍉题目要求每组有3个队员,在3*n个选手,n组队伍中找到每组队伍的水平值(队员中第二高的水平值),然后求出所有队伍水平值总和的最大值第一行输入:队伍的个数n第二行输入:3 * n个选手的水平值输出:水平值总和可能超过int所以设为long🍉思路分析要求水平值总和的最大值,只需要保证每支队伍的水平值最大,那么和就最大。如何使每支队伍的水平值最大呢?
2022-03-22 19:05:23
2278
67
原创 C++中vector的模拟实现&&迭代器失效问题
vector是一个可变大小的序列容器,可以理解为动态增长的顺序表,但vector可以存储任意类型的数据,不管是自定义类型还是内置类型。所以vector是一个类模板,vector在实际中也非常重要,用的也很频繁。下面我们来深入了解vector的常用接口以及模拟实现
2022-03-19 14:22:52
2219
58
原创 【C++】STL中string类的模拟实现
C标准库中也提供了一系列的str库函数,但不符合oop思想(核心:封装、继承、多态),所以C++引入了string类,在OJ中很多有关字符串的题目都是以string类出现的,下面我们深入了解一下string以及模拟实现
2022-03-13 16:36:02
2669
61
原创 C语言每日一练——动态开辟的杨辉三角
文章目录问题引入解决方法思路分析C代码实现C++实现问题引入我们在C语言阶段,第一次碰到的杨辉三角应该都是用常规的二维数组存储,可以观察到,用绿色填充的空间都是没有被利用的。存储1行 浪费0个存储2行 浪费1个存储3行 浪费3个 存储4行 浪费6个
2022-03-09 16:21:21
5081
88
原创 源文件如何一步步到可执行程序【程序员必修课】
引入想必大家编写的第一个程序都是hello world,到后来编写越来越多的程序,我们都知道编译链接,那我们是否了解一个源文件是如何编译为.exe的可执行程序的呢?下面我们就来深入了解一下在C/C++中,一个程序要运行起来,要经历四个阶段:预处理、编译、汇编、链接,最后形成可执行程序由于windows下的vs系列是集编辑器、编译器、调试器等为一体的IDE环境,所以我们在Linux下演示预处理这里在test.c文件中编写了一个简单的测试代码选项-E :让 gcc 在预处理结束后停止编译过程
2022-03-04 11:25:17
9941
39
原创 c++动态内存管理new/delete
前言想必大家对c语言的动态内存分配并不陌生,忘了的小伙伴也可以看看我的这篇文章C语言动态内存分配c语言的动态内存分配由于有些地方用起来麻烦,因此c++引入new/delete操作符进行内存管理,下面我们来深入探讨c++为什么要引入new/delete......
2022-02-21 21:27:49
2035
29
原创 【数据结构】堆的讲解与实现
文章目录堆的结构分析堆的实现堆的存储结构堆初始化堆的插入push向上调整堆判空堆删除pop向下调整堆销毁运行结果时间复杂度分析源代码堆的经典应用堆的结构分析需要注意的是堆是一种数据结构,与操作系统的堆区没有关系。堆的结构:堆是完全二叉树,从左到右是连续的,适合用数组存储堆是一颗完全二叉树,分为大堆和小堆大堆:一个树中,任何父亲节点都大于等于孩子节点,所以大堆的根节点最大小堆:一个树中,任何父亲节点都小于等于孩子节点,所以小堆的根节点最小堆的实现了解过顺序表的小伙伴,对堆的实现就非常简
2022-02-20 14:23:01
1459
20
原创 双指针解决数组问题
例题Leetcode链接,合并两个有序数组由于有m和n表示有效元素个数,所以题目给定的nums1Size和nums2Size没多大用处。已知nums1的空间刚好将nums1的有效元素个数m和nums2的有效元素个数n放入,要将nums2的数据放入nnums1中构成新的有序数组,由于两个数组是有序的,我们只需要通过两个指针分别比较大小,在通过另一个指针去改变数组nums1中的值,这实际就是多指针解决问题那我们要从前开始比较,还是从后开始比较呢?如果从前开始比较的话...
2022-01-22 21:34:44
1728
18
原创 函数栈帧的创建和销毁(程序员必修课)
1.局部变量是如何创建的2.未初始化的局部变量为什么是随机值3.函数是如何传参的,传参顺序是怎样的4.形参和实参是什么关系5.函数是如何调用的
2021-12-16 14:54:50
3050
57
原创 循环输出不确定长度数据且末尾无空格
题目要求:输入两个正整数a、b,找出[a, b]之间的素数,由小到大输出。(2 <= a <= b <=1000000),输出[a,b]之间的素数,素数之间用一个空格隔开,每个输出占一行。相当于是输出不确定长度数据,素数中间以空格隔开,且末尾无空格。不知道大家第一次遇到这种题时,用的是什么方法。我想到的是:第一次输入不加空格,直接以%d的形式打印,且只以这种形式输出一次。之后的每一次都以空格+%d的形式打印,这样输出末尾就无空格了。...
2021-12-14 21:21:43
2479
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人