
C++
文章平均质量分 57
ppipp1109
积累,进步 vx:iyp1109
展开
-
Eigen内存分配器aligned_allocator
在使用Eigen的时候,如果STL容器中的元素是Eigen数据库结构,比如下面用vector容器存储Eigen::Matrix4f类型或用map存储Eigen::Vector4f数据类型时: vector<Eigen::Matrix4d>; std::map<int, Eigen::Vector4f> 这么使用编译能通过,当运行时会报段错误。对eigen中的固定大小的类使用STL容器的时候,如果直接使用会出错,所谓固定大小(fixed-size)的类是原创 2022-05-04 22:27:38 · 1080 阅读 · 0 评论 -
C++ 中 char[],char *,string之间转换
char []与char *之间转换char []转char *:直接进行赋值即可// char[] 转char *char str[] = "lala";char *str1 = str;cout << str1 << endl;char *转char[]:字符拷贝实现,不能进行赋值操作// char *转换为char []const char *s...原创 2020-04-21 19:06:59 · 2541 阅读 · 0 评论 -
UR 机器人HMI 交互界面开发记录
UR机器人的技术协议可以到官网主页下载,我这里整理了一份。稍后上传到csdn,有需要的可以下载。功能实现了机器人的操作,IO设置于显示,dashboard发送接收反馈的调试功能等。同时软件也支持多台UR机器人独立操作。UR机器人支持的协议很多,可以根据自己的需要,选择合适的协议进行通信通信端口有modbusTCP端口(502)没研究Dashboard端口(29999...原创 2020-04-21 18:32:40 · 1447 阅读 · 3 评论 -
C++ 之std::function() 作为函数参数入口 详解
1. 关于std::function()在C语言的时代,我们可以使用函数指针来吧一个函数作为参数传递,这样我们就可以实现回调函数的机制。到了C++11以后在标准库里引入了std::function模板类,这个模板概括了函数指针的概念函数指针只能指向一个函数,而std::function对象可以代表任何可以调用的对象,比如说任何可以被当作函数一样调用的对象。当你创建一个函数指针的时候,你必须...转载 2018-12-03 11:40:21 · 37525 阅读 · 4 评论 -
C++ 之std::function()及 std::bind() 学习总结
1. std::function介绍类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。...原创 2018-12-03 13:34:03 · 13986 阅读 · 2 评论 -
c++11 之emplace_back 与 push_back的区别
c++开发中我们会经常用到插入操作对stl的各种容器进行操作,比如vector,map,set等。在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)时,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题就是临时变量申请资源的浪费。引入了右值引用,转移构造函数后...原创 2018-12-03 14:32:45 · 170085 阅读 · 39 评论 -
c++ 之 删除字符串中的子串 两种方式
C++实现删除给定字符串的给定字符串思路主要有这么几种实现方式:1.KMP算法2.用STL的string的 find,然后用erase3.用C的strstr找到字串位置,然后用strncpy写到新串中4.用boost库,用正则表达式测试代码:#include <QCoreApplication>#include<iostream>#include &...原创 2019-01-11 10:12:50 · 5834 阅读 · 0 评论 -
sizeof()、strlen()、length()、size()用法和区别
c/c++中获取字符串长度。有以下函数:size()、sizeof() 、strlen()、str.length();一、数组或字符串的长度:sizeof()、strlen()1、sizeof():返回所占总空间的字节数(1)、对于整型字符型数组(2)、对于整型或字符型指针2、strlen():返回字符数组或字符串所占的字节数(1)、针对字符数组(2)、针对字符指针...转载 2019-09-07 00:36:45 · 593 阅读 · 0 评论 -
C++ vector的使用总结及常用vector操作
一、介绍C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,使用时需包含头文件:#include <vector>二、使用方式C++ vector类有两种使用方式:第一种:STL方式vector< string > text;1. 我们向 vector 中插入元素,而不...原创 2019-09-07 00:53:33 · 6764 阅读 · 0 评论 -
C++ 之 pair用法总结
1. pair的应用pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。如果一个函数有两个返回值 的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便...原创 2019-09-07 01:09:38 · 3431 阅读 · 0 评论 -
C++ 之stl容器 map 用法整理
1. map 简介map是STL的一个关联容器,它提供一种以键-值(key-value)一对一存储的数据类型hash。原型:typedef pair<const Key, T> value_type;map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红...原创 2019-09-15 00:09:50 · 660 阅读 · 0 评论 -
c++之this指针详解
1.this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。...转载 2019-09-20 15:50:58 · 1711 阅读 · 0 评论 -
c++ 之四大智能指针 std::auto_ptr std::shared_ptr std::unuque std::weak_ptr 比较总结
1. 动态内存必要性程序不知道自己需要多少对象; 程序不知道对象的准确类型; 程序需要在多个对象之间共享数据;2. 动态内存在哪里程序有静态内存、栈内存。静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建或销毁。对于栈对象,仅在其定义的程序块运行时才存在...原创 2018-11-30 15:24:13 · 2147 阅读 · 0 评论 -
c++ 之 std::move 与 完美转发 std::forward
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <vector>#include <map>// C++中还有一个被广泛认同的说法,那就是可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值。// 相对于左值,右...转载 2018-11-30 11:21:36 · 674 阅读 · 0 评论 -
c++ STL vector 、list、 deque、set 等各种容器总结
一、容器的定义 在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法。二、容器的种类 1、顺序容器:是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的...转载 2018-05-29 11:40:39 · 498 阅读 · 0 评论 -
C++三大特性之多态
转载自:http://www.cnblogs.com/quincyhu/p/5867504.html概念多态(Polymorphisn)多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说:允许将子类类型的指针赋值给父类类型的指针(一个接口,多种方法)。C++ 支持两种多态性:编译时多态性,运行时多态性。a...转载 2018-06-08 13:15:28 · 282 阅读 · 0 评论 -
C++三大特性之继承
转载自:http://www.cnblogs.com/quincyhu/p/5867490.html基本概念继承: 类的继承,就是新的类从已有类那里得到已有的特性。原有的类称为基类或父类,产生的新类称为派生类或子类。基本语法派生类的声明:class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n{ 派生类成员声明;};在 c++ 中,一个派生类可以同时有...转载 2018-06-08 13:20:16 · 183 阅读 · 0 评论 -
c++三大特性之封装
转载自:http://www.cnblogs.com/quincyhu/p/5867468.html什么是封装?封装: 封装可以隐藏实现细节,使得代码模块化封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其...转载 2018-06-08 13:22:04 · 617 阅读 · 0 评论 -
C++ 三大特性 封装、继承和多态 详细总结
转自:https://blog.youkuaiyun.com/uestclr/article/details/51553978面向对象三大特征:封装,继承,多态;一、封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现;作用是便于分工和分模块,防止不必要的扩展;二、继承:就是一种传承,可以把父类型中的数据传承到子类中,子类除了传承了父类的数据之外,还可以对父类型进行扩展;公开继承...转载 2018-06-08 13:24:27 · 611 阅读 · 0 评论 -
C++11 中chrono库 实现高精度定时
一种“传统”ctime计时方法:#include <ctime>using namespace std;clock_t start = clock();// do something...clock_t end = clock();cout << "using" << (double)(end - start) / CLOCKS_PER_S...转载 2018-11-23 17:08:16 · 9865 阅读 · 0 评论 -
c++ 11 中显式默认设置的函数和已删除的函数 总结
今天在一个类中看到如下代码不是很懂,原来是c++11 新特性RateTimer(const RateTimer&) = delete; //不可拷贝/不可赋值 RateTimer& operator=(const RateTimer&) = delete;在 C++11 中,默认函数和已删除函数使你可以显式控制是否自动生成特殊成员函数。 已删除的函数还可为您提...原创 2018-11-29 14:55:17 · 2284 阅读 · 0 评论 -
c++ 11 constexpr 常量表达式 简单理解
常量表达式(constexpr)常量表达式机制是为了:提供了更多的通用的值不发生变化的表达式允许用户自定义的类型成为常量表达式提供了一种保证在编译期完成初始化的方法(可以在编译时期执行某些函数调用) 基本语法: 1.修饰常量表达式 int var1 = 100; const int const_var2 = 200; const in...原创 2018-11-29 16:10:12 · 770 阅读 · 0 评论 -
c++ 之智能指针:尽量使用std::make_unique和std::make_shared而不直接使用new
关于make_unique的构造及使用例程,MSDN的讲解非常详细 (https://msdn.microsoft.com/zh-cn/library/dn439780.aspx )使用过程中,主要有这么几个关键点:1. make_unique 同 unique_ptr 、auto_ptr 等一样,都是 smart pointer,可以取代new 并且无需 delete pointer,...翻译 2018-11-29 16:44:28 · 37732 阅读 · 0 评论 -
c++ 之 std::move 原理实现与用法总结
在C++11中,标准库在<utility>中提供了一个有用的函数std::move,std::move并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。从实现上讲,std::move基本等同于一个类型转换:static_cast<T&&>(lvalue);std::move函数可以以非常简单的方...原创 2018-11-30 10:40:30 · 267048 阅读 · 21 评论 -
c++ 之 std::this_thread::yield 与std::this_thread::sleep_for
std::this_thread::yield: 当前线程放弃执行,操作系统调度另一线程继续执行。即当前线程将未使用完的“CPU时间片”让给其他线程使用,等其他线程使用完后再与其他线程一起竞争"CPU"。std::this_thread::sleep_for: 表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU,根据线程需求,等待若干时间。this_thread 包装了一组可以访问当前...原创 2018-11-30 11:03:20 · 14304 阅读 · 0 评论 -
C++中 用 头文件 还是用 前置声明
在应用的时候有时候有些分不清 到底哪种方式更好,今天研究了一下一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:class B;class A{ public: ...转载 2018-05-23 11:46:48 · 1222 阅读 · 0 评论