
C++
文章平均质量分 87
鸿_H
https://github.com/LiangHongY
本人开源工程,专注有趣!欢迎星星
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++学习笔记2----模板类、继承、struct在class内定义相关问题记录
背景:写的算法合并到项目组代码,编译发现一些以前没积累过的错误,这里记录下,也供大家参考。 一、问题1 // 每个类都有单独的.h .cpp class A; class B : public A { // ... }; class C : public A { // ... }; 若在B.h中引用了一个.hpp文件,编译时提示 在C.cpp中也存在一个.hpp内容定义,即出现了重定义内容 解决方式: 不使用.hpp方式,应该使用.h .cpp方式,即声明与实现分别写在两个文件中 二、问题原创 2024-11-02 11:03:57 · 420 阅读 · 0 评论 -
C++学习笔记1----STL容器知识简要小结
优点:std::string 是用于处理字符串的容器,提供了许多字符串操作函数,包括连接、查找、截取等。适用场景:处理文本和字符串数据时非常有用,例如文件读写、文本搜索、字符串拼接等。优点:std::vector 是动态数组,支持快速随机访问,提供高效的插入和删除操作,通常在元素数量可变但需要随机访问的情况下使用。适用场景:用于需要高性能的元素存储和随机访问的情况,例如数组替代、列表、堆栈等。优点:std::deque 是双端队列,支持高效的双端插入和删除操作,适用于需要在队列的两端进行操作的情况。原创 2023-10-10 17:25:42 · 489 阅读 · 4 评论 -
数据结构与算法碎片积累(十)
前言:继续肝数据结构与算法课程笔记blog 1、排序算法 1)排序: 假设含有n个记录的序列为{r1,r2,…,rn},其相应的关键字分别为{k1,k2,…,kn},需确定1,2,…,n的一种排序p1,p2,…,pn,使其相应的关键字满足,kp1<=kp2<=…<=kpn非递减(或非递增)关系,即使序列成为一个按关键字有序的序列{rp1,rp2,…,rpn},这样的操作就被称为排序。 2)排序的稳定性 假设ki=kj(1<=i<=n,1<=j<=n,i!=j),且在原创 2021-10-10 23:14:57 · 217 阅读 · 0 评论 -
数据结构与算法碎片积累(九)
前言:继续愉快数据结构与算法blog。 1、散列表(哈希表)查找 1)要在a[]中查找key关键字的记录: ----顺序表查找:挨个儿比较来找 ----有序表查找:二分法查找 ----散列表查找:记录的存储位置=f(关键字),从而开始找 补充小知识,散列表是根据关键码值(Key value)而直接进行访问的数据结构。(源自百度解析) 2)散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应的一个存储位置f(key)。这里将这种对应关系f称为散列函数,又称为哈希(has原创 2021-10-10 22:16:46 · 162 阅读 · 0 评论 -
数据结构与算法碎片积累(八)
前言:继续愉快周末下午肝blog,搞完去跑步。 1、平衡二叉树 平衡二叉树,要么其是一棵空树,要么其的左、右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1 1)平衡二叉排序树: 标准案例。 这个满足平衡二叉排序树性质,所以是一棵平衡二叉树。 2)非平衡二叉树例子: 这里不是平衡二叉排序树,因为10大于3,应该在右侧却在左侧;1小于9,应该在左侧却在右侧,不满足二叉排序树性质。 这不属于平衡二叉树,因为不满足左右的深度差不大于1(对于9点,其右子树深度为0,左子树深度为2,深度差为2,原创 2021-10-10 17:11:01 · 240 阅读 · 0 评论 -
数据结构与算法碎片积累(七)
前言:这系列时间间隔了半年,是时候更完这余下近30节课程笔记啦。不然,得在硬盘里面发霉了。 1.查找算法 1)按照查找方式来分,可分为,静态查找和动态查找 静态查找,要求数据集合稳定,不需要添加、删除元素的一种查找操作 动态查找,要求数据集合,在查找过程中,需要同时添加或删除元素的一种查找操作 2)对于动态查找来说,可以使用线性表结构组织数据,这样可以使用顺序查找算法,如果再对关键字进行排序,则可以使用折半查找算法或裴波拉契查找算法等来提高查找的效率 3)对于动态查找来说,则可以考虑二叉树排序树的查找技术,原创 2021-10-10 12:41:00 · 315 阅读 · 0 评论 -
数据结构与算法碎片积累(六)
前言:日常忙中偷懒写blog。 1、马踏棋盘算法(骑士周游问题) 1-1)已知条件: 国际象棋的棋盘为8*8的方格棋盘,现将“马”放在指定任意的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格。 编写代码,实现马踏棋盘的操作,要求使用1~64来标注“马”移动的路径 1-2)对于在n*n的棋盘上,当n>=5且为偶数的时候,以任意点作为点都有解。 马踏棋盘的其中一个解: 1-3)一些相关知识点: 1-3-1)回溯法: 指导思想很简单,就是一条路走到原创 2021-04-19 16:01:56 · 609 阅读 · 0 评论 -
数据结构与算法碎片积累(五)
前言:时隔四个月,这系列课程笔记总算有点时间整理更新到这里来了。 1、普通树转为二叉树操作如何? 答: 1)加线:在所有结点(指的是兄弟间结点)之间加一条连线; 2)去线:对树中每个结点,只保留它与第一个孩子(从做到右数,第一个孩子)结点的连线,删除它与其他孩子之间的连线; 3)层次调整:以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明; 例子: 2、森林转换为二叉树,操作如何? 答: 1)把每棵树转为二叉树(方法如同1介绍); 2)第一棵树不动,从第二棵二叉树开始,依次把后一棵二叉树的原创 2021-04-11 16:37:21 · 665 阅读 · 0 评论 -
数据结构与算法碎片积累(四)
引言:这一章主要介绍的是树结构,包括其中的基本树概念,然后重点学习二叉树。 20201210 1、树是啥? 答: 1)树的定义:树(tree)是n(n>0)个节点的有限集。当n=0时,为空树,在任一棵非空树中: 1-1)有且仅有一个特定的称为根(Root)节点; 1-2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree); 2)根概念的理解注意点: 2-1)n>0时,根节点是唯一的,坚决不能存原创 2020-12-11 17:04:26 · 293 阅读 · 0 评论 -
数据结构与算法碎片积累(三)
前言:递归、分治、字符串匹对算法。个人感觉似懂非懂,先总结下来吧。开始之前,先说一下我对上面几个的基本理解: 1)递归:相同步骤,不断调用自身,但是需要设置终止条件(常规套路,先假设步骤成立,然后直接调用); 2)分治:递归时候,可能单纯一个步骤不足以解决这个问题,那么,我们就把这一解决方法,分成几个子步骤,不断递归来各个子步骤来解决问题,这种分拆解决问题的思路,就是分治; 3)字符串匹对算法:如何快速查找下次匹配开始点,就是匹配算法的关键点。 好了,下面开始,骚挠环节: 20201210 1、递归和迭代简原创 2020-12-10 20:20:50 · 224 阅读 · 0 评论 -
数据结构与算法碎片积累(二)
背景:非科班梳理基础知识ing 前言:数据结构与算法碎片积累(一)有60个小题(20节课),感觉看起来太多了,所以,接下来根据课程安排,采用课程内容分类方式来总结。这样子,或许回头看时候,更人性化一些。 20201124 1、啥叫双向链表? 答:简单理解,就是一个节点,由数据域data,有前指针prior,指针next组成。 typedef char ElemType; typedef struct DualNode { ElemType data; struct DualNode* prior;//前原创 2020-11-24 20:37:03 · 329 阅读 · 0 评论 -
C++刷题一些经验知识积累
背景:刷牛客时候,有些大佬的解答挺优秀的,收集一下,便人便己。 1、关于对象继承之间的转换。 答:转换指的是通过改变一个变量的类型为别的类型,从而改变该变量的表示方式。 C++标准定义了四个新的转换符:reinterpret_cast、static_cast、dynamic_cast和const_cast,目的是控制类(class)之间的类型转换。 1)reinterpret_cast:用来处理无关类型之间的转换,例如整数与指针相互转换。 2)static_cast:可以用于类层次结构中基类和子类之间的指针原创 2020-11-01 09:29:18 · 617 阅读 · 0 评论 -
数据结构与算法碎片积累(一)
背景:非科班补基础知识ing 知识点: 20201028 啥叫程序设计? 答:程序设计=数据结构+算法 啥叫数据结构? 答:数据元素之间的关系集合。 算法设计体现例子: 从1加到100之和 //方法一: int add_1() { int i, sum = 0, n = 100;//执行1次 for (i = 1; i <= n; i++)//执行n+1次 { sum += i;//执行了n次 } return sum; }//运行次数100次 //方法二: int add_2() {原创 2020-10-30 08:44:25 · 646 阅读 · 0 评论 -
秋招中,C/C++相关面试的问题总结
基本情况:秋招中,一些面试中,C/C++问题总结 重要问题说三次,面试时,一定一定一定要注意准备: 数据结构和算法! 数据结构和算法! 数据结构和算法! 数据结构: 1、结构体对齐 答:结构体字节对齐的细节和编译器实现相关,但一般需要满足三个基本原则: 1)结构体变量的首地址能够被最宽基本类型的成员的大小所整除 2)结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节 3)结构体的总大小为结构体最宽基本类型成员的整数倍。 2、结构体复制 答:C++里面的话,将原创 2020-10-27 19:15:22 · 396 阅读 · 0 评论 -
ROS学习笔记12---使用git管理代码
(1)Git 指令 在bit bucket云端管理代码: git checkout [branchName] 跳转到我想要去的branch git pull 从bitbucket server上将最新的code下载到本地 git merge [branchName] 将其他branch的代码合并到当前的branch下 git log 读取bitbucket server里有哪些合并或修...原创 2020-04-14 14:27:59 · 427 阅读 · 0 评论 -
学习笔记48-Windows端代码管理一些小知识
环境:Windows10 1)上传代码到GitHub的操作: 注意 这里是假设本地和网页端都事先配置好了的 cd 代码保存库 git add . //这里表示把库里面都上传的,如果是指定的话,直接后接文件名就可以了 git commit -m "first commit" //这里需要在双引号里面填写自己的备注的 git push -u origin master //这里表示将代码推送到master端 2)更新中。。。。 ...原创 2020-09-07 22:25:36 · 143 阅读 · 0 评论 -
ROS学习笔记10 --yaml-cpp编写动态修改yaml文本文件中已定义参数变量的样式介绍
环境:ubuntn16.04 ros-kinetic vs-code 关于yaml-cpp的基本使用可以参考这位大神的解析https://blog.youkuaiyun.com/briblue/article/details/89515470 这是我目前查到最通俗易懂的解析. 这里,对于里面的yaml-cpp的基本运用就不重复了.这里想实现的目地是,只是修改原来的yaml文件里面已有参数对应的变量值,而不是...原创 2020-04-13 15:05:17 · 3103 阅读 · 2 评论