C/C++
C/C++相关
Tech沉思录
这个作者很懒,什么都没留下…
展开
-
C++常用操作
目录保存txt文件为.pcd读取txt到点云pcl可视化分割字符串获取目录下所有文件名保存txt文件为.pcd // 保存txt文件为.pcd /* * filename: 文件名,全路径 * parent_dir: 保存的pcd路径 */ bool savetxt2pcd(const std::string filename, const std::string parent_dir) { pcl::PointCloud&l原创 2021-06-07 16:07:45 · 278 阅读 · 0 评论 -
C++分割字符串
1、通过string成员函数实现在C++ string类中,提供了两个成员函数可以用来实现字符串分割,一个是find函数,另一个是substr函数,下面看一下这两个函数的声明。find函数:原型: size_t find (const string& str, size_t pos = 0) const;功能:查找子字符串第一次出现的位置。参数说明:str为子字符串,pos为初始查找位置。返回值:找到的话返回第一次出现的位置,否则返回string::npos。substr函数:原型:原创 2021-06-01 14:50:41 · 3858 阅读 · 1 评论 -
windows下vscode调试cpp工程
vscode调试g++工程有两种调试方式,推荐使用第二种。1、使用终端生成好的.exe文件1、调试的话需要文件夹下生成带有调试信息的可执行文件,在终端使用如下命令 g++ -g .\main.cpp .\swap.cpp -o mymutilswap其中-g代表生成带有调试信息的.exe文件2、点击调试按钮生成launch.json文件。下面对launch.json文件进行解释{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性原创 2020-11-06 22:02:22 · 856 阅读 · 1 评论 -
linux下vscode配置cmake、c++工程
更详细内容请参考:https://www.bilibili.com/video/BV1fy4y1b7TC?p=24&t=404或关注作者的公众号:VSCode1、编译过程1、预处理2、编译3、汇编4、链接2 3、g++常用参数1、-O优化2、-L -l链接库3、-I指定头文件路径g++ main.cpp src/swap.cpp -Iinclude -o swap_class 4、-Wall打印警告信息5、-w关闭警告信息6、-std=c++11设置编.原创 2020-11-06 21:58:26 · 1631 阅读 · 1 评论 -
const那些事儿
目录1、const含义2、const作用3、const对象默认为文件局部变量4、定义常量4、指针与const6、函数中使用const7、类中使用const1、const含义常类型是指使用类型修饰符const说明的类型,是只读的(不能更新),这意味着需要在定义的时候就要赋初值。2、const作用定义常量const int a=100;注意:要记得在定义的时候赋值(初始化)类型检查const是定义的变量,是有数据类型的,而define定义的对象没有数据类型,所以编译器对前者进行安全检查原创 2020-08-20 21:05:46 · 194 阅读 · 0 评论 -
C++计时
目录简介方法1(time.h)方法2(sys/time.h)结果简介简单介绍c++的计时方法方法1(time.h)无使用环境的限制#include <time.h> // 计时模块time_t start,end; // 计时start=clock();...end=clock();std::cout<<"DBSCAN time: "<<(end-start)/1000<<" ms"<<s原创 2020-08-16 17:20:30 · 6547 阅读 · 1 评论 -
[C++]读取txt文件中的参数
目录程序getline读取处理例子参考程序getline读取 string filename = "../Config/params.txt"; fstream fin; fin.open(filename.c_str(), ios::in);// vector<string> v; vector<float> v_f; string tmp; while (getline(fin, tmp)) {原创 2020-06-22 22:13:55 · 1586 阅读 · 0 评论 -
[c++]从命令行读取参数
#include <cstdlib>harris.setRadiusSearch(atof(argv[2])); // 关键点检测的半径原创 2020-06-09 01:04:13 · 1289 阅读 · 0 评论 -
【C++】多态与虚函数
目录虚函数多态多态的表现形式一多态的表现形式二多态的作用虚函数的访问权限多态的实现原理(虚函数表)代码虚析构函数推荐纯虚函数和抽象类虚函数virtual只能存在于类定义的函数声明中,定义函数的时候不用多态多态的表现形式一派生类的指针可以赋值给基类指针。通过基类指针调用基类和派生类中的同名虚函数时,如果指针指向的是基类对象,则调用基类的虚函数;反之,调用派生类的虚函数多态的表现形式二派生类的对象可以赋值给基类引用通过基类引用调用基类和派生类中的同名虚函数时,若该引用指向的是一个基类对象,原创 2020-06-05 18:52:06 · 534 阅读 · 1 评论 -
【侯捷P9】String类的拷贝构造、拷贝赋值、析构函数
目录头文件cpp文件头文件P9.h#ifndef __P9__#define __P9__#include <iostream>#include<cstring>using namespace std;// class with pointer numberclass String{private: /* data */char* m_data; // 动态分配 一个指针是 4原创 2020-06-05 11:29:53 · 212 阅读 · 0 评论 -
【侯捷P11】面向对象编程
目录面向对象编程Composition(复合)构造和析构Delegation(委托)Inheritance(继承)虚函数与多态继承和composition关系下的构造和析构Delagation(委托)和Inheritance(继承)关于虚函数与纯虚函数、非虚函数面向对象编程为什么需要面向对象编程?为了让类和类之间发生关系。Composition(复合)表示has-a(有一个的关系)构造和析构其中红色的是C++为我们实现的。Delegation(委托)也叫Compositio原创 2020-06-05 11:18:44 · 177 阅读 · 1 评论 -
【侯捷P10】关于static、类模板、函数模板、namespace
这里写目录标题static静态的函数只能处理静态的数据调用static函数通过对象调用。通过类名称Singleton类模板函数模板Namespacestatic静态的函数只能处理静态的数据static double m_ratestatic void set_rate(const double& x)调用static函数通过对象调用。一般,通过对象调用成员函数的时候是通过对象的地址(this)放到成员函数内部类调用。但是static成员函数不适用对象的地址通过类名称Classna原创 2020-06-05 11:13:21 · 197 阅读 · 0 评论 -
【侯捷P8】定义类时分配的内存
这里写目录标题定义类时分配的内存complex 类的调试模式下complex类的非调试模式下string类的调试模式下string类的非调试模式下complex类数组分配内存string类数组的分配内存array new一定要搭配array delete定义类时分配的内存complex 类的调试模式下包含两个double 4字节new 一个complex对先分配内存,在内存中的分布如下:解释一下:首先,两个double会得到8个byte,也就是绿色部分(这里比较迷惑,一个double不应该是原创 2020-06-05 11:10:47 · 311 阅读 · 1 评论 -
【侯捷P7】含指针的类需要重写拷贝构造、拷贝赋值、析构函数
目录拷贝构造、拷贝赋值、析构函数拷贝构造函数拷贝赋值函数拷贝赋值过程(深拷贝)浅拷贝析构函数拷贝构造、拷贝赋值、析构函数对于有指针的类,一定要重新写拷贝构造和拷贝赋值函数拷贝构造函数String::String(const String& str){ // 开辟内存 m_data = new char[strlen(str.m_data)+1]; // 直接取对象str的private类成员变量m_data,因为同类兄弟之间互为friend // 复制 strcpy(m_data,原创 2020-06-05 11:08:50 · 403 阅读 · 0 评论 -
【C++学习】魔兽世界大作业
目录作业要求分块设计完整代码关于作业作业要求分块设计完整代码关于作业作业来自MOOC上北京大学的C++课程原创 2020-06-04 23:37:13 · 1711 阅读 · 0 评论 -
ros实现地面过滤+欧式聚类(boundingbox)
这里写目录标题代码解析地面分割欧式聚类结果可视化地面滤除欧式聚类遇到的问题调用PCL库时出现segmentation fault(core dumped)错误参考代码解析地面分割欧式聚类结果可视化地面滤除代码实现:https://github.com/VincentCheungM/Run_based_segmentation论文:Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous V原创 2020-05-22 22:39:45 · 6294 阅读 · 4 评论 -
ubuntu16.04中clion 中不能输入中文
问题Fcitx,搜狗输入法,不能输入中文解决在clion的安装目录下找到bin文件夹下面的clion.sh,然后找到# ---------------------------------------------------------------------# Run the IDE.# ---------------------------------------------------------------------在上面添加XMODIFIERS="@im=fcitx"expor原创 2020-05-19 10:52:22 · 3156 阅读 · 0 评论 -
【C++】侯捷 C++面向对象高级开发P1-6
视频侯捷《C++面向对象开发》——动手实现自己的复数类代码complex.h#ifndef __MYCOMPLEX__#define __MYCOMPLEX__ #include<iostream>using namespace std;class complex; // complex&// __doapl (complex* ths, const complex& r);// complex&// __doami (complex*转载 2020-05-16 18:51:06 · 269 阅读 · 1 评论 -
Eigen基础函数
参考Eigen中四元数、欧拉角、旋转矩阵、旋转向量之间的转换注意Eigen中 四元数最后一个数为实部注意输出欧拉角的次序 2,1,0代表绕x-y-z轴旋转的角度代码#include<iostream>#include<eigen3/Eigen/Core>#include<eigen3/Eigen/Dense>#include <eigen3/Eigen/Geometry>#include <cmath>using n原创 2020-05-11 22:49:32 · 1542 阅读 · 0 评论 -
【C++基础知识】持续更新
STL 容器std::unordered_set std::unordered_set<int> 是一个不含重复元素的容器,其中的每一个元素都是独一无二的。 和unordersd_map类似这个unorder暗示着,这两个头文件中类的底层实现----Hashstd::pair<PtCdtr, PtCdtr>这个类主要功能是把两个不同类型或者相同类型的数据组合成一个数据。可以使用first、second来访问变量。初始化一个pair可以使用构造函数,也可以使用std:原创 2020-05-10 23:22:07 · 144 阅读 · 0 评论 -
PCL点云转rangeImage中的视角变换(旋转+平移)
PCL点云转RangeImage函数template <typename PointCloudType> void RangeImage::createFromPointCloud (const PointCloudType& point_cloud, float angular_resolution, f...原创 2020-05-05 12:26:26 · 2571 阅读 · 0 评论 -
eigen3/Eigen与Eigen的问题
使用eigen库时出现找不到文件的错误在编译点云处理程序时,会使用pcl,pcl依赖于eigen,出现错误 fatal error: Eigen/Core: No such file or directory问题原因出现这个错误的原因是eigen默认安装在/usr/include/eigen3/Eigen.我们需要的也是这个Eigen.解决出现这个问题首先要考虑是否安装了ei...原创 2020-04-10 11:25:52 · 6738 阅读 · 0 评论 -
PCL 双边滤波器API使用
参考:PCL双边滤波代码#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/kdtree/kdtree_flann.h>#include <pcl/filters/bilateral.h>typedef pcl::PointXYZI PointT;intmai...原创 2020-01-05 11:49:12 · 788 阅读 · 1 评论 -
2020-1-3-LeetCode【1304. 和为零的N个唯一整数】
1304. 和为零的N个唯一整数给你一个整数n,请你返回任意一个由n个各不相同的整数组成的数组,并且这n个数相加和为0。示例示例 1:输入:n = 5输出:[-7,-1,1,3,4]解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2:输入:n = 3输出:[-1,0,1]示例 3:输入:n = 1...原创 2020-01-03 15:02:06 · 245 阅读 · 0 评论 -
2020-1-3-LeetCode【1295. 统计位数为偶数的数字】
1295. 统计位数为偶数的数字给你一个整数数组nums,请你返回其中位数为偶数的数字的个数。示例示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)...原创 2020-01-03 14:51:55 · 208 阅读 · 0 评论 -
2020-1-3-LeetCode【1275. 找出井字棋的获胜者】
1275. 找出井字棋的获胜者A 和B在一个3x3的网格上玩井字棋。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用"X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。"X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果...原创 2020-01-03 11:26:31 · 480 阅读 · 0 评论 -
2020-1-3-LeetCode【1266. 访问所有点的最小时间】
1266. 访问所有点的最小时间平面上有n个点,点的位置用整数坐标表示points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。示例输入:p...原创 2020-01-03 11:01:11 · 132 阅读 · 0 评论 -
2020-1-3-LeetCode【1260. 二维网格迁移】
1260. 二维网格迁移给你一个 n 行 m 列的二维网格grid和一个整数k。你需要将grid迁移k次。每次「迁移」操作将会引发下述活动:位于 grid[i][j]的元素将会移动到grid[i][j + 1]。位于grid[i][m - 1] 的元素将会移动到grid[i + 1][0]。位于 grid[n - 1][m - 1]的元素将会移动到gri...原创 2020-01-03 10:47:10 · 129 阅读 · 0 评论 -
2020-1-3-LeetCode【1252. 奇数值单元格的数目】
1252. 奇数值单元格的数目给你一个n行m列的矩阵,最开始的时候,每个单元格中的值都是 0。另有一个索引数组indices,indices[i] = [ri, ci]中的ri 和 ci 分别表示指定的行和列(从 0 开始编号)。你需要将每对[ri, ci]指定的行和列上的所有单元格的值加 1。请你在执行完所有indices指定的增量操作后,返回矩阵中 「奇数...原创 2020-01-03 10:16:23 · 194 阅读 · 0 评论 -
2020-1-3-LeetCode【1232. 缀点成线】
1232. 缀点成线在一个XY 坐标系中有一些点,我们用数组coordinates来分别记录它们的坐标,其中coordinates[i] = [x, y]表示横坐标为 x、纵坐标为 y的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...原创 2020-01-03 09:52:36 · 174 阅读 · 0 评论 -
2020-1-3-LeetCode【1217. 玩筹码】
1217. 玩筹码数轴上放置了一些筹码,每个筹码的位置存在数组chips当中。你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):将第 i 个筹码向左或者右移动 2 个单位,代价为 0。将第 i 个筹码向左或者右移动 1 个单位,代价为 1。最开始的时候,同一位置上也可能放着两个或者更多的筹码。返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价...原创 2020-01-03 09:36:42 · 111 阅读 · 0 评论 -
2020-1-2-LeetCode-【1200. 最小绝对差】
1200. 最小绝对差给你个整数数组arr,其中每个元素都不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。示例示例 1:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]示例 2:输入:arr = [1,3,6,10,15]输出:[[1,3]]示例 3:输入:arr = [3,8,-10,23,19,-4,-...原创 2020-01-02 12:05:48 · 291 阅读 · 0 评论 -
2020-1-2-LeetCode【1185. 一周中的第几天】
1185. 一周中的第几天给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:day、month 和year,分别表示日、月、年。您返回的结果必须是这几个值中的一个{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。来源:力扣(LeetCode)...原创 2020-01-02 11:47:00 · 345 阅读 · 0 评论 -
2020-1-2-LeetCode【1184. 公交站间的距离】
1184. 公交站间的距离环形公交路线上有n个站,按次序从0到n - 1进行编号。我们已知每一对相邻公交站之间的距离,distance[i]表示编号为i的车站和编号为(i + 1) % n的车站之间的距离。环线上的公交车都可以按顺时针和逆时针的方向行驶。返回乘客从出发点start到目的地destination之间的最短距离。来源:力扣(LeetCod...原创 2020-01-02 11:35:52 · 322 阅读 · 0 评论 -
2020-1-2-LeetCode【1170. 比较字符串最小字母出现频次】
1170. 比较字符串最小字母出现频次我们来定义一个函数f(s),其中传入参数s是一个非空字符串;该函数的功能是统计s 中(按字典序比较)最小字母的出现频次。例如,若s = "dcce",那么f(s) = 2,因为最小的字母是"c",它出现了2 次。现在,给你两个字符串数组待查表queries和词汇表words,请你返回一个整数数组answer作为答案,其...原创 2020-01-02 11:09:32 · 161 阅读 · 0 评论 -
2020-1-1-LeetCode【1299. 将每个元素替换为右侧最大元素】
1299. 将每个元素替换为右侧最大元素给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组示例输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^4 1 <= arr[i] <=...原创 2020-01-01 20:12:07 · 255 阅读 · 0 评论 -
2020-1-1-LeetCode【1128. 等价多米诺骨牌对的数量】
1128. 等价多米诺骨牌对的数量给你一个由一些多米诺骨牌组成的列表dominoes。如果其中某一张多米诺骨牌可以通过旋转 0度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b]和dominoes[j] = [c, d]等价的前提是a==c且b==d,或是a==d 且b==c。在0 <= i...原创 2020-01-01 20:01:32 · 196 阅读 · 0 评论 -
2020-1-1-LeetCode【1287. 有序数组中出现次数超过25%的元素】
1287. 有序数组中出现次数超过25%的元素给你一个非递减的有序整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。请你找到并返回这个整数示例输入:arr = [1,2,2,6,6,6,6,7,10]输出:6提示:1 <= arr.length <= 10^4 0 <= arr[i] <= 10^5思路使...原创 2020-01-01 19:45:02 · 373 阅读 · 0 评论 -
2020-1-1-LeetCode【1122. 数组的相对排序】
1122. 数组的相对排序给你两个数组,arr1 和arr2,arr2中的元素各不相同arr2 中的每个元素都出现在arr1中对 arr1中的元素进行排序,使 arr1 中项的相对顺序和arr2中的相对顺序相同。未在arr2中出现过的元素需要按照升序放在arr1的末尾来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr...原创 2020-01-01 19:30:29 · 302 阅读 · 0 评论 -
2020-1-1-LeetCode【1089. 复写零】
1089. 复写零给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组就地进行上述修改,不要从函数返回任何东西。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/duplicate-zeros著作权归领扣网络所有...原创 2020-01-01 18:58:51 · 183 阅读 · 0 评论