C++
文章平均质量分 67
Maccy37
这个作者很懒,什么都没留下…
展开
-
动态内存分配
动态内存分配函数名描述malloc()$1600calloc()$12realloc()$1free()$1原创 2022-04-17 11:34:53 · 1486 阅读 · 0 评论 -
C语言和C++结构体
C语言结构体C语言定义结构体// An highlighted blockstruct { int real; int image;}m_Complex; //m_Complex是上面结构体的成员//orstruct Complex{ int real; int image;};定义结构体Date的成员struct Complex m_Complex; //需要带有关键字struct 数组和结构体区别:数组同类数据结构体(每个构成成员必须具有相同的数据类型),结构体异类原创 2022-03-06 22:09:52 · 1050 阅读 · 0 评论 -
堆-heap
priority queue可以借用堆(heap),binary heap是一种complete binary tree(完全二叉树)完全二叉树:binary tree除最底层叶节点之外,是填满,最底层叶节点由左到右不得有空隙。用vector来存储所有节点,vector的第0个元素保留设为(无限大或者无限小),完全二叉树某个节点位于vector的 i 处,其左节点位于vector的2i处,其右边节点位于vector的2i+1处(隐式表述法)。heap可分为max-heap和min-heap.原创 2021-12-16 00:14:06 · 1019 阅读 · 0 评论 -
set关联容器去除重复地图点出现问题 error: no match for ‘operator<’ (operand types are ‘const Point’ and ‘const Point
set中每个元素只包含一个关键字,set支持高效关键字查询---检查一个关键字是否在set中。vector<sweep::MetricPoint2D> carpetPoint;set<Point> gridPoint;void DealMap::onRobotPoseReceived(const geometry_msgs::PoseStampedPtr ptrRobotPose){ if (robot_state->device_state.carpet原创 2021-12-07 21:13:13 · 1671 阅读 · 0 评论 -
多项式方程求根
参考别人的博客,顺便借鉴过来作个笔记.使用多项式的伴随矩阵进行求解多项式: 多项式的伴随矩阵:的特征值就是的根.使用Eigen进行多项式的求解:#include <iostream>#include <Eigen/Core>// 稠密矩阵的代数运算(逆,特征值等)#include <Eigen/Dense>using namespace std;int main( int argc, char** argv ){ E.原创 2021-05-25 10:35:42 · 5162 阅读 · 1 评论 -
queue 和 deque
一.queue:队列只能访问queue<T>容器适配器第一个元素和最后一个元素.只能在容器的末尾添加新元素,只能从头部移除元素.queue容器的头文件: #include <queue> using namespace std;queue容器的成员函数见下表:函数成员 函数功能 front() 访问第一个元素 back() 访问最后一个元素 push() 在 queue 的尾部添加一个元素 pop().原创 2021-01-22 10:16:21 · 496 阅读 · 0 评论 -
vector容器添加元素
基础不牢,在容器vector上撞墙,做做笔记来吸取教训vector添加元素,我原来的代码vector<MetricPoint2D> Smooth::smoothPath(const vector<MetricPoint2D> &path){ int length = path.size(); vector<MetricPoint2D> smoothPath; smoothPath.clear(); for (int原创 2021-01-05 21:26:34 · 1901 阅读 · 0 评论 -
linux的sleep()和usleep()
usleep() :将进程挂起一段时间, 单位是微秒(us)(百万分之一秒);sleep():暂停的单位是秒,而不是毫秒. --LinuxSleep():暂停的单位是毫秒,不是秒,(其中"S"是大写) --Windowusleep函数在Linux系统中两个函数头文件都是: unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。原创 2020-12-12 09:48:48 · 1305 阅读 · 0 评论 -
typedef与define的区别
一.typedef定义类型的别名,和引用相似,引用是变量或者对象的别名typedef prefix suffix; //程序中用后者表示前者#define m_prefix m_suffix; //程序中用前者表示后者这是关于这两者我最直接肤浅的理解。二.typedef struct 和 struct定义结构体也更好理解了。在C中定义一个结构体类型要用typedef:(1)typedef struct Student{ int age; int nu...原创 2020-12-03 18:41:56 · 110 阅读 · 0 评论 -
关于priority_queue(优先队列)的一些误解
主要参考博客:https://blog.csdn.net/weixin_36888577/article/details/79937886优先队列的定义:priority_queue<Type, Container, Functional>Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型原创 2020-11-18 10:57:53 · 518 阅读 · 0 评论 -
机器人路径规划
MRPT库默认地图栅格格式是:666*666,随机器人运动扩大变化ROS rviz上的位姿和路径轨迹都是米制显示,路径计算要转化成栅格,因此存在栅格坐标和米制坐标之间的互转关系。A*算法:堆数据结构的基础和底层数据结构...原创 2020-11-05 09:42:42 · 857 阅读 · 0 评论 -
hypot函数、fmod函数
看ros navigation里面的程序经常出现hypot这个函数,百度一番发现惊喜:摘抄别人博客如下:hypot函数 C ++ hypot()函数 (C++ hypot() function)hypot() function is a library function of cmath header, it is used to find the hypotenuse of the given numbers, it accepts two numbers and returns the ca原创 2020-10-30 22:49:50 · 1639 阅读 · 0 评论 -
STL的函数erase()
void prunePlan(const geometry_msgs::PoseStamped& global_pose, std::vector<geometry_msgs::PoseStamped>& plan, std::vector<geometry_msgs::PoseStamped>& global_plan){ ROS_ASSERT(global_plan.size() >= plan.size()); std::vec.原创 2020-10-30 15:34:47 · 291 阅读 · 0 评论 -
Eigen库计算两个向量夹角
一、一点到原点的距离,pt(x,y)Vector2f v1(x,y);float res1= v1.norm(); // 等于 sqrt(x^2+y^2) , 即距离float res2 = v1.squaredNorm(); // (x^2+y^2)二、两个点之间的距离 CPoint pt1(10, 10), pt2(5, 5); Vector2f v4(pt1.x, pt1.y), v5(pt2.x, pt2.y); float原创 2020-10-06 15:36:21 · 6420 阅读 · 1 评论 -
C++表示无穷大无穷小
在计算直线的斜率的时候,当角度接近PI/2时候,斜率就会接近无穷大。intC++表示无限大的时候,可以借用limits.h库,里面定义各种数据类型最大值最小值#include<limits.h>int数据类型对应最大值/最小值如下:int->INT_MAX / INT_MINunsignen int ->UINT_MAX / UINT_MINlong->LONG_MAX / LONG_MINunsigned long->ULONG_MA原创 2020-09-28 16:07:40 · 11959 阅读 · 0 评论 -
C++ STL关于map插入元素和map的排序
map插入元素:map<uint32_t,string> temp;方式1:temp[1]="template";方式2:temp.insert(pair<uint32_t,string>(1,"template"));方式3:temp.insert(make_pair(1,"template"));pair实际上是一个结构体,其主要的两个成员是first和second,因此:for(const auto&i :temp){ cout<.原创 2020-09-28 14:00:59 · 3616 阅读 · 0 评论 -
预编译处理指令中的条件编译
#if,#ifdef,#ifndef,#else,#elif,#endif的用法:预编译处理语句都是以#开头,其结尾不带分号,与普通程序语句相区别。这些命令可以让编译器进行简单的逻辑控制,当一个文件被编译时,可以用这些命令去决定某些代码的去留,这些是命令式条件编译的命令。常见的条件编译的三种形式:①第一种形式:#if defined(或者是ifdef)<标识符(条件)> <程序段1>[#else <程序段2>] #endif ②第二种形原创 2020-09-03 18:56:48 · 473 阅读 · 0 评论 -
C++ access( )函数
access( )函数:用于文件读取,判断文件是否存在,并判断文件是否可写。Linux中,函数为access();标准C++中,该函数为_access,两者的使用方法基本相同access(const char *pathname, int mode);//位于<unistd.h>中int _access(const char *pathname, int mode);//位于<io.h>中pathname 为文件路径或目录路径 mode 为访问权限如果文件具有指定的访原创 2020-09-03 16:43:35 · 12932 阅读 · 0 评论 -
ros::spinOnce()和ros::spin()的使用和区别
运行程序的时候,订阅/scan话题消息一直传不进激光数据,后来挣扎一番问朋友发现是没写ros::spinOnce(),没法调用回调函数传入激光数据。下面是在解决问题之后,参考别人的博客,写的学习笔记。1.关于ros消息发布器和订阅器的教程: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(c++)2.看完链接里面的教程后,我们知道: 消息发布器在一个while里面一直循环发送“hello worl...原创 2020-08-22 13:41:18 · 221 阅读 · 0 评论 -
LeetCode 128最长连续序列
题目:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。我的解:class Solution {public: int max(int a,int b) { return a>b?a:b; }; int longestConsecutive(vector<..原创 2020-06-06 22:42:30 · 226 阅读 · 0 评论 -
LeetCode 面试题29 顺时针打印矩阵
代码搬运工就是我啦!参考LeetCode官网链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/solution/shun-shi-zhen-da-yin-ju-zhen-by-leetcode-solution/题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印每一个数字。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5转载 2020-06-06 20:49:39 · 151 阅读 · 0 评论 -
LeetCode 238 除自身以外数组的乘积
参考链接:https://leetcode-cn.com/problems/product-of-array-except-self/solution/chu-zi-shen-yi-wai-shu-zu-de-cheng-ji-by-leetcode-/解题思路:利用索引左侧所有数字的乘积和右侧所有数字的乘积(前缀和后缀)相乘来解决.我的解法:class Solution {public: vector<int> productExceptSelf(vector...原创 2020-06-05 16:07:36 · 225 阅读 · 1 评论 -
LeetCode 面试题64. 求1+2+…+n
逻辑运算符的短路性质以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 False ,那么 A && B 已经确定为False ,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回 True ,那么 A || B 已经确定为 True ,此时不会去执行表达式 B。利用这一特性,我们可以将判断是否为递归的出口看作 A && B 表达式中的 A ...转载 2020-06-03 17:38:05 · 146 阅读 · 0 评论 -
LeetCode 820 单词的压缩编码
我理解有错误["self","fish","hike"] 压缩编码之后就成为“selfishike#”其实是错误的,正确的压缩方式是“self#fish#hike#,导致我一直卡在这里。只有下一个单词完全是上一个单词的后缀才可以改写如["time","me",“bell”],即是“time#bell”。解题思路:把每个字符串都倒序,然后排序,只需要比较相邻的字符串即可class S...原创 2020-03-28 23:39:39 · 126 阅读 · 0 评论 -
LeetCode 914 卡牌分组
我的思路:(思考有欠缺)通过用哈希表计算每一种卡牌的数量,然后计算哈希表每一个元素的value是否相等,不相等就输出false。网络上参考别人的思路纠正思路:例如有一个卡牌value为2,另外一个卡牌的value为8。输出的布尔值是true。解题思路:最大公约数+哈希表class Solution {public: bool hasGroupsSizeX(vec...原创 2020-03-28 12:42:27 · 206 阅读 · 0 评论 -
虚函数和纯虚函数的区别
首先:强调一个概念虚函数:定义一个函数为虚函数,不代表函数为不被实现的函数,定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。纯虚函数:定义一个函数为纯虚函数,才代表函数没有被实现,定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。class A{public: virtual void foo() ...转载 2020-03-16 16:55:37 · 149 阅读 · 0 评论 -
字符串-LeetCode5: 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."class Solution {public: string replaceSpace(string s) { string result; for(auto c:s) ...原创 2020-02-28 14:20:56 · 140 阅读 · 0 评论 -
LeetCode 401:二进制手表
二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1返回: ["1:00", "2:00", "4:00", "8:00", "0:01...转载 2020-02-26 17:15:20 · 282 阅读 · 0 评论 -
LeetCode 784:字母大小写全排列
原题:思路:先将S放到数组里,循环遍历S的每个字符,当字符为字母的时候,遍历数组,将字符位转变成(这个字符原大写改为小写,小写改为大写)然后存入数组中。“这里为什么要遍历数组”想了很久,贴图:例如:使数组第一个元素第一个字母变为大写,遍历“a1b2c3”变为“A1b2c3” 使数组第一,二个元素第二个字母变为大写,遍历“a1b2c3”“A1b2c3”变...转载 2020-02-23 23:54:34 · 118 阅读 · 0 评论 -
/usr/include/vtk-6.2/vtkAtomicInt.h:307:28: error: reference to ‘detail’ is ambiguous......
在用xtion pro相机做目标检测时,求解框选出检测的目标物体在相机坐标系下的空间位置,可能是程序中同时用了opencv和pcl库的缘故导致,显示点云时出现error,大概就是标题上的错误.我忘记截图了网上搜了一圈资料,尝试几个方法无果,最后看了,参考了这个博客:https://blog.csdn.net/zfjBIT/article/details/101055525,按照它里面的做法...原创 2020-01-01 23:42:10 · 1998 阅读 · 3 评论 -
多线程Leetcode1116.打印零与奇偶数
这道题目主要参考了Leetcode上一道题目Leetcode1115运用互斥量mutex来解决:class ZeroEvenOdd {private: int n; mutex zeromx,oddmx,evenmx;public: ZeroEvenOdd(int n) { this->n = n; oddmx....原创 2019-11-19 14:16:13 · 590 阅读 · 0 评论 -
多线程Leetcode1114.按序印
其实我写的不通过,使用了unique_lock创建独占锁,发现执行不通过,于是参考了别人的正确答案:我的错误答案:class Foo {public: Foo() { std::mutex lmutex; thread threadFirst(&first); thread threadSecond(&...转载 2019-11-16 20:53:07 · 126 阅读 · 0 评论 -
随机函数rand()[c++]
rand()的用法rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。/* maximum value returned by "rand" function */ #define RAND_MAX 0x7fffu 这个是bcc55中的定义,说明这个整数的最大数是0x7fffu...转载 2019-11-12 15:26:16 · 160 阅读 · 0 评论 -
leetcode 149.直线上最多的点数
思路跟leetcode的答主的相似,代码能力不好,写不出来,然后参考leetcode上的博主的:直接copy过来了思路遍历每个点,通过斜率相等判断是否与其它点在同一条直线上。分为三种情况:相同点x点坐标相同,即与x轴垂直正常求斜率注意:long double防止精度丢失class Solution {public: int maxPoints(vector<v...转载 2019-11-12 10:19:53 · 128 阅读 · 0 评论 -
static_cast和dynamic_cast的区别
static_cast用法:static_cast< type-id > ( expression )说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。来源:为什么需要static_cast强制转换?情况1:void指针->其他类型指针情况2:改变通常的标准转换情况3:避免出现可能多种转换的歧义它主要有如...转载 2019-11-11 11:20:14 · 180 阅读 · 0 评论 -
编写函数使字符串中的数字倒序,其他字符位置保持不变,返回处理后的字符串
eg:str="h1i2k3j4",返回"h4i3k1j1";str="k12j1m2",返回 "k21j2m1"string reverse_vowel(string & str){ int n=str.size(); vector<int> numbers; for(int i=0;i<n;++i) { if(i...原创 2019-11-10 22:27:16 · 1186 阅读 · 0 评论 -
c++编译错误:invalid new-expression of abstract class type
源码:class BreadthFirstTraversal : public GraphTraversal<T>{.................;}m_pTraversal = new BreadthFirstTraversal<LocalizedRangeScan>(this);出错原因:出现这个错误原因是new 了一个子类对象类出...原创 2019-11-04 15:13:01 · 1436 阅读 · 0 评论