![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 63
合工大机器人实验室
不积跬步,无以至千里。
展开
-
为SOCKET多线程通信添加线程清理与线程退出功能
为SOCKET多线程通信添加线程清理与线程退出功能原创 2022-07-11 20:12:37 · 561 阅读 · 0 评论 -
用C++ Thread实现简单的socket多线程通信
用C++ Thread实现简单的socket多线程通信原创 2022-07-04 21:16:46 · 2106 阅读 · 0 评论 -
Linux主机连接云服务器
Linux主机连接腾讯云服务器原创 2022-06-29 19:59:54 · 423 阅读 · 2 评论 -
C++并发编程(7):条件变量(conditional variable)、wait( )与notify_one( )、spurious wakeups(虚假唤醒)
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-17 08:58:02 · 2822 阅读 · 7 评论 -
C++并发编程(6):单例模式、once_flag与call_once、call_once实现单例
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-15 14:42:31 · 1581 阅读 · 0 评论 -
C++并发编程(5):std::unique_lock、互斥量所有权传递、锁的粒度
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-13 09:33:24 · 1479 阅读 · 0 评论 -
C++并发编程(4):共享数据的问题、使用互斥量保护共享数据、死锁
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-11 09:11:17 · 612 阅读 · 0 评论 -
C++并发编程(3):移交线程归属权
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-10 11:28:43 · 418 阅读 · 2 评论 -
C++并发编程(2):向线程函数传递参数
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-08 20:21:45 · 1174 阅读 · 0 评论 -
C++并发编程(1):基本概念、线程管控
主要学习介绍C++并行编程的基础知识,做一些学习记录并分享原创 2022-05-07 09:11:24 · 983 阅读 · 0 评论 -
四轮驱动(SSMR)移动机器人手柄控制
四轮驱动(SSMR)移动机器人手柄控制原创 2022-04-29 22:55:53 · 2414 阅读 · 4 评论 -
三点or多点的变换矩阵求解opencv & eigen
《Estimating 3-D Rigid Body Transformations: A Comparison of Four Major Algorithms》,它使用SVD方法计算 T 和 t 。只要算出变换矩阵,就可以算出A坐标系的一个点P在坐标系B里的对应点坐标,即R为3x3的转换矩阵, t 为3x1的位移变换向量,这里点坐标均为3x1的列向量(非齐次形式,齐次形式下为4x1列向量,多出的一个元素值补1而已)。理论上只要给定至少3对点,就能计算出 R 和 t 。自然的,点对越多,计算出来的转换原创 2021-12-24 16:11:39 · 5147 阅读 · 5 评论 -
pcl::PointCloud 点云用vtk显示、转换类型及vtkPolyDataMapper报错处理
pcl的显示对少量点运显示,比如一条线,很不友好,需要旋转缩小才能找到,所以这里直接转成vtk显示。函数直接传入参数,点云的指针即可。#include <vtkSmartPointer.h>#include <vtkLineSource.h>#include <vtkPolyData.h>#include <vtkPolyDataMapper.h>#include <vtkActor.h>#include <vtkPropert原创 2021-11-24 09:25:03 · 3050 阅读 · 0 评论 -
windows PCL8.1 的安装与配置
主要参考:windows系统下PCL的安装与配置下载问题:本文使用8.1 VS2015: 下载不下来可以在这里下载:http://file.cloudlhd.cn/安装完成:报错error C4996:error C4996: 'std::_Uninitialized_copy0'解决:1、打开项目属性2、c/c++目录3、预处理器4、在右侧表单中编辑第一条“预处理器定义”5、将报错提示中的问题填入,_SCL_SECURE_NO_WARNINGS6、确认或者在头文件前加上:#pra原创 2021-11-08 13:40:13 · 457 阅读 · 0 评论 -
VS2015报错 error C2065:未声明的标识符错误 (__func__)
问题:VS2015 编译VTK8.2 报错error C2065 未声明的标识符错误 (__func__)解决:(两种)(1)网上更换头文件顺序(第一种方法测试,但是没作用,暂时放在这里,第二种方法测试有效)#include "StdAfx.h"放在最前面(2)更改,,名称(测试有效)__func__ 替换为 __FUNCTION__测试有效...原创 2021-08-23 11:28:42 · 5735 阅读 · 2 评论 -
VS报错解决:error:LNK2005 已经在*.obj中定义
问题:情况是这样的一个全局变量在一个头文件中定义,比如:head1.h中定义了全局变量int a = 10;在另外一个类的头文件class.h中包含了头文件head1.h如:include “head1.h”,并使用extern int a;尝试跨文件使用全局变量include "head1.h"extern int a;编译时报错:main.obj : error LNK2005: "class " 。。。。。已经在*.obj中定义解决办法:首先保证无重名变量的重定义出现,然后将定义原创 2021-08-11 13:31:42 · 2928 阅读 · 0 评论 -
解决fatal:You can‘t push to git://github.com/username/*.git
在本地git仓库写完代码后,利用 git push 命令提交到远程仓库时,总是出现如下报错:不能将代码上传到远程仓库解决办法:git remote rm origingit remote add origin git@github.com:username/*.gitgit push origin如果是在git clone 时用的是git://github.com/username/*.git就会出现这个问题,因为这个 protocol 是不支持 push 的应使用如原创 2021-06-22 12:29:04 · 985 阅读 · 0 评论 -
Protocol Buffers 介绍与快速使用 实用(C++ & linux(ubuntu16.04))
1.protobuf介绍**protobuf(Protocol Buffers )是Google的开源项目,是Google的中立于语言、平台,可扩展的用于序列化结构化数据的解决方案。用来对数据进行序列化和反序列化。protobuf支持目前主流的开发语言,包括C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP等。只要你使用以上语言,都可以用protobuf来序列化和反序列化你的数据。数据的序列化和反序列化序列化 (Serial原创 2021-04-21 16:23:44 · 308 阅读 · 0 评论 -
使用多个windows的API报应输入标识符错误
当我们使用多个Windows API时需要包含多个头文件,头文件会出现定义冲突的问题,这就造成了应输入标识符等一系列错误。我们需要做的就是调整包含头文件顺序,比如我们同时需要"WinSock2.h" 和"Windows.h",因为一般编译器默认先查找windows.h头文件,windows.h文件会包含winsock.h,当你包含winsock2.h二者就会冲突,所以我们只要将"WinSock2.h"放在"Windows.h"前面包含就行了。#include <WinSock2.h>.原创 2020-12-01 10:50:27 · 318 阅读 · 0 评论 -
Makefile 使用总结
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.本篇博客是基于{...原创 2019-06-11 11:04:04 · 361 阅读 · 0 评论 -
C++ 的bitset 用法简介
https://www.cnblogs.com/magisk/p/8809922.htmlbitset是C++语言的一个类库,用来方便地管理一系列的bit位。使用bitset需要导入头文件:#include <bitset>函数: bool any(); ------ 如果有位被设置为1返回真,否则返回假。 size_type count(); ------ 返回bitset中被设置成1的位的个数。 bitset &flip(); 或 bitset &原创 2020-09-13 14:22:07 · 434 阅读 · 0 评论 -
位运算实现多种运算
位运算可以实现哪些功能_bigfacesafdasgfewgf-CSDN博客 https://blog.csdn.net/puqutogether/article/details/43446413只用位运算来实现整数的加减乘除四则运算_Python_LUCKYOJ-CSDN博客 https://blog.csdn.net/ojshilu/article/details/111799...原创 2020-02-24 18:48:32 · 312 阅读 · 0 评论 -
局部变量 静态局部变量 全局变量与静态全局变量
原文链接:c语言局部变量 静态局部变量 全局变量与静态全局变量 - L的存在 - 博客园 https://www.cnblogs.com/lanjianhappy/p/6035433.html基本概念: 作用域:起作用的区域,也就是可以工作的范围。代码块:所谓代码块,就是用{}括起来的一段代码。数据段:数据段存的是数,像全局变量就是存在数据段的代码段:存的是程序代码,一般是只读的...原创 2020-02-24 09:34:19 · 480 阅读 · 0 评论 -
STL之Set、Pair、Map使用
Map和Mulitmap使用头文件#include<map>定义:Map是关联容器,每个元素都是Key:Value为一对的键与健值。唯一的不同是,map的键值key不可重复,而multimap可以,也正是由于这种区别,map支持[ ]运算符,multimap不支持[ ]运算符。在用法上没什么区别。定义:map<key_type,value_type> m...原创 2020-02-20 09:26:21 · 799 阅读 · 0 评论 -
STL之List使用
List 的使用:定义:标准模板库实现的是双向链表,每个链表节点包含数据和指向下一个数据的指针。可以实现快速插入和删除,但是随机访问慢。头文件:#include <list>定义:List<elementtype> listname;其他构造函数类似vector:构造函数: list<elementtype>lst1;...原创 2020-02-19 18:16:22 · 256 阅读 · 0 评论 -
STL之Queue、Deque使用
Quque的使用:定义:队列与栈一样,是一种线性结构,特点是插入在队尾,删除在队首。满足,先入先出的特性。队列的相关概念:队头与队尾: 允许元素插入的一端称为队尾,允许元素删除的一端称为队头。入队:队列的插入操作。出队:队列的删除操作。Qeque是quque的扩展,称之为双向队列,也就是在队首和队尾都可以进行插入和删除的操作。queue相关操作:void pu...原创 2020-02-19 10:52:00 · 587 阅读 · 1 评论 -
STL之Stack使用
Stack栈的使用:定义:栈是一种受限的线性表,只允许在栈一端进行插入和删除操作,称为栈顶,满足先进后出(后进先出)原则。头文件:#include<stack>创建:stack<ElementType > stackname;还有一些重载的构造函数类似vector。插入函数:push(Num):将Num压入栈查询函数:top():查询栈顶元素...原创 2020-02-19 10:06:02 · 387 阅读 · 0 评论 -
STL之 Vector使用
Vector使用:定义:能够存放任意类型的动态数组。(1)头文件#include<vector>(2)创建vector对象,vector<int>vec;构造函数重载如下:vector():创建一个空vectorvector(int nSize):创建一个vector,元素个数为nSizevector(int nSize,const t...原创 2020-02-18 13:39:50 · 749 阅读 · 0 评论 -
已知二叉树的前序遍历和中序遍历,重建出该二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回/** * Definition for binary tree * struct TreeNode { * int val; * Tr...原创 2020-02-15 12:31:28 · 417 阅读 · 0 评论 -
windows/linux的socket案例程序(TCP and UDP)
#include <WinSock2.h>#include <stdio.h>#include <windows.h>#pragma comment(lib,"wsock32.lib")#define PORT 6000int tcpserv();int udpserv();int main(){ udpserv(); system(...原创 2019-11-06 18:35:14 · 381 阅读 · 0 评论 -
cout的格式化输出
使用流操作算子C++ 中常用的输出流操纵算子如表 1 所示,它们都是在头文件 iomanip 中定义的;要使用这些流操纵算子,必须包含该头文件。注意:“流操纵算子”一栏中的星号*不是算子的一部分,星号表示在没有使用任何算子的情况下,就等效于使用了该算子。例如,在默认情况下,整数是用十进制形式输出的,等效于使用了 dec 算子。表1:C++ 流操纵算子 流操纵算子 作 用...原创 2019-10-23 22:31:16 · 309 阅读 · 0 评论 -
C++primer学习笔记(四)
C++primer学习笔记(三)第六章 语句第七章 函数第六章 语句1.复合语句,通常被称为块,是用一对花括号括起来的语句序列(也可能是空的);块的结束不是以分号结束;2.3.IO类型可以用作条件,但vector类型和string类型一般不可用作条件;4.将else匹配给最后出现的尚未匹配的if子句来解决悬垂else问题带来的二义性;5.每个case标号的值都必须是一个常量表达式6....原创 2019-05-25 15:25:40 · 334 阅读 · 0 评论 -
C++ Primer学习笔记(一)
第一章 快速入门1.每个C++程序都包含一个或多个函数,而且必须有一个命名为main。函数由执行函数功能的语句序列组成;2.main函数是唯一被操作系统显式调用的函数;3.main函数的形参个数是有限的4.函数体是函数定义的最后部分,是以花括号开始并以花括号结束的语句块;5.注释不会增加可执行程序的大小,编译器会忽略所有注释;6.我们注释的风格是在注释的每一行以星号开始,指...原创 2019-05-17 21:02:47 · 270 阅读 · 0 评论 -
c++ auto基本用法
c++ auto基本用法:https://blog.csdn.net/lwgkzl/article/details/82110068C++11标准遍历字符串std::string str = “hello, world”;for(auto ch : str) { std::cout << ch << std::endl;}auto ch:str意...原创 2019-05-17 10:24:15 · 2828 阅读 · 1 评论 -
iterator、const_iterator及const iterator区别
const vector<int>::iterator中,const是修饰的迭代器,也就是是个常迭代器,一旦初始化比如=a.begin(),再不能更改它的值,比如赋值=a.end()是不行的,递增递减操作等都不允许。虽然类似指针,但指针是内置类型,所以编译器可以通过const的位置来判断是常指针还是指向常量的指针,而迭代器只是一个对象,所以编译器不能分辨,所以用const_iter...原创 2019-05-30 14:57:57 · 516 阅读 · 0 评论 -
C++ primer 学习笔记(五)
第八章 标准IO库1. iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象;2.如果函数有基类类型的引用形参时,可以给传递其派生类型的对象;3.只有支持赋值的元素类型可以存储在vector或其他容器类型里,因此不存在存储流对象的vector或其他容器;4.形参或返回类型也不能为流类型。...原创 2019-05-30 16:58:49 · 267 阅读 · 0 评论 -
C++primer学习笔记(三)
第五章 表达式1.短路求值:逻辑与和逻辑或操作符总是先计算其左操作数,然后再计算其右操作数。只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数;2.赋值操作符的左操作数必须是非const的左值;3.数组名是不可修改的左值:因此数组不可用作赋值操作的目标;4.只要被赋值的每个操作数都具有相同的通用类型,C++语言允许将这多个赋值操作写在一个表达式中:int i...原创 2019-05-23 18:59:27 · 422 阅读 · 0 评论 -
C++ primer 学习笔记(六)
第十章 关联容器1.关联容器支持通过键来高效地查找和读取元素;2.关联容器不提供front、push_front、pop_front、back、push_back以及pop_back操作;3.要使用map对象,则必须包含map头文件;4.所有的比较函数必须在键类型上定义严格弱排序;5.在实际应用中,键类型必须定义<操作符,而且该操作符应能“正确地工作”;6.使用下标访...翻译 2019-06-05 10:04:26 · 276 阅读 · 0 评论 -
LINUX下代码历遍目录的方法dirent.h
LINUX下历遍目录的方法一般是这样的打开目录-》读取-》关闭目录相关函数是opendir -> readdir -> closedir#include <dirent.h>DIR *opendir(const char *dirname);struct dirent *readdir(DIR *dirp);int closedir(DIR *dirp...原创 2019-06-19 13:49:13 · 939 阅读 · 0 评论 -
基于QT读取微软xbox ones 手柄消息并写入文件
具体代码已经上传资源,可供下载。https://download.csdn.net/download/qq_34935373/11430248项目结构如下:.pro文件如下#-------------------------------------------------## Project created by QtCreator 2019-06-04T00:46:01##...原创 2019-07-25 11:22:58 · 2600 阅读 · 9 评论