- 博客(49)
- 收藏
- 关注
原创 旋转的几种数学表示方法
旋转矩阵:运算方便;使用9个量描述3自由度旋转,引入额外约束,求导困难。旋转向量:紧凑的表示旋转;具有周期性。欧拉角: 直观,用户友好,需要指定旋转顺序,存在万向节死锁问题,无法进行球面平滑插值。四元数:紧凑的不带奇异的表示方法;对用户来讲不太直观,用求单位四元数,表示旋转也会过参数化。...
2022-05-06 22:50:51
846
原创 gnutls_handshake() failed: Error in the pull function.
新安装的镜像Ubuntu 16.04 LTS 拉取git库时报错,gnutls_handshake() failed: Error in the pull function.执行下面操作后可以正常拉取git上的库了#取消代理git config --global --unset http.https://github.com.proxy
2022-03-08 00:08:33
4170
1
原创 读取raw格式数据,OpenCV显示
void read_raw(){ int w = 640;//原始图像的高 int h = 480;//原始图像的宽 FILE* fp = NULL; //定义指针s fp = fopen("F:\\Image\\test_depth\\dist_1200mm\\depth_640x480_18376_0243.raw", "rb+"); Mat src; src.create(Size(w, h), CV_16UC1); fread(src.data, si.
2022-02-11 09:30:38
3620
原创 QT编译错误:undefined reference to `vtable for” ClassName
1. 右键项目, 点击 “Clean”2. 右键项目,点击 “Run qmake”3. 点击QT Create最上面的Build,执行“Run”执行完上述步骤后编译通过了。看别人的文章也有可能其他问题导致这个编译错误,如果这个办法没有用的话,可以参考别人的解决办法。...
2021-10-21 18:17:16
225
原创 vs2019+QT新建UI窗口
在vs2019中新建一个QT的widget窗口第一步:第二步:其中可以选择MainWindow或者Widget窗口,填写好ui的名字。第三步:建立好对应ui名字的 .h 和 .cpp文件即可。双击新建的ui文件,如果打不开的话,可以重新配置一下qt designer。先移除qt designer(如果不能移除的话直接添加另一个同名的qt designer),然后添加qt安装路径下的qt designer.exe为默认值,重启项目就可以打开.ui文件了。新建的ui窗
2021-03-22 14:50:34
8638
2
转载 高效遍历Mat图片的指针方式
https://blog.csdn.net/lehuoziyuan/article/details/84031429?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.not_use_machine
2020-12-25 09:34:31
93
原创 在anaconda下安装第三方库指定版本号和指定镜像源
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.13.2
2020-05-13 18:27:20
1519
原创 TCP/IP协议族
TCP/IP协议族是一个四层协议系统:自下而上分别是数据链路层,网络层,传输层,应用层。数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网,令牌环)上的传输。两个常用的协议是ARP协议(Address Resolve Protocol,地址解析协议)和RARP(Reverse Address Resolve Protocol,逆地址解析协议)。他们实现了IP地址和机...
2019-05-14 14:19:35
125
转载 将文件间的编译依存关系降至最低的例子
在说这一条款之前,先要了解一下C/C++的编译知识,假设有三个类ComplexClass, SimpleClass1和SimpleClass2,采用头文件将类的声明与类的实现分开,这样共对应于6个文件,分别是ComplexClass.h,ComplexClass.cpp,SimpleClass1.h,SimpleClass1.cpp,SimpleClass2.h,SimpleClass2.cpp。...
2019-05-07 11:09:20
118
原创 const_cast / dynamic_cast / static_cast / reinterpret_cast
一 const_castconst_cast是一个强制类型转换操作符。《C++ Primer》中是这样描述它的:1.将转换掉表达式的const性质。2.只有使用const_cast才能将const性质性质转化掉。试图使用其他三种形式的强制转换都会导致编译时的错误。(添加const还可以用其他转换符,如static_const)3.除了添加const或删除const特性,使用cons...
2019-05-06 19:35:12
196
原创 构造函数语义学
一Default constructor的建构操作nontrivial default constructor的四种情况:1. “ 带有 Default Constructor ” 的 Member Class Objectclass Foo { public: Foo(); Foo(int);}class Bar{ ...
2019-04-20 12:14:51
200
转载 C++中的 struct 与 class 的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!!既然这些它都能实现,那它和class还能有什...
2019-04-19 16:29:09
95
原创 Linux 文件与文件系统的压缩,打包与备份
gzip : 可以解开compress, zip, gzip等软件所压缩的文件。gzip [-cdtv#] 文件名 zcat 文件名.gz 读出压缩文件的内容 gzip压缩 会把原始文件删除,只留下压缩文件 gzip解压缩 会把 压缩文件删除,只留下解压出来的文件xz : 用法跟gzip 几乎一模一样压缩比更好,但是用时更久打包指令 : tar压缩 : ...
2019-04-16 11:49:21
106
原创 Linux文件系统
区块的组成 :data block(数据区块)、Inode table(inode 表格)、 superbolck(超级块)、filesystem description(文件系统描述说 明)、 block bitmap(区块对照表)、 inode bitmap(inode对照表)data block : 放置文件内容数据地方 inode table : 记录文件的属性以及该文件实际数据是...
2019-04-15 21:35:57
187
原创 Linux基础指令的操作
在你没有更改默认的快捷键的时候:对整个屏幕截图: PrintScreen对活动窗口截图: Alt+PrintScreen对任意矩形截图: Shift+PrintScreen以上三个快捷键再加上Ctrl,就会默认复制截图到粘贴板1. 显示日期的指令 : date2. 显示日历的指令: calcal cal 2019...
2019-04-13 22:23:19
87
原创 Effective c++ 阅读笔记
第一节 让自己习惯 C++条款 2:尽量以const, enum, inline替换#define对于单纯常量,最好以const对象或enums 替换 # define 对于形似函数的宏,最好改用inline函数替换# define条款 3: 尽可能使用const将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于作用域内的对象、函数参数。参数返回类型、...
2019-04-13 19:45:34
138
原创 Effective C++ 关键字explicit
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子: class CxString // 没有使用explicit关键...
2019-04-13 18:48:25
89
原创 Effective C++ Logic constness 和 Bitwise constness
什么是 Logic constness有以下类 BigArray,其成员 vector<int> v; 是一个数组数据结构,为了让外部可以访问该数组,此类提供了一个 getItem 接口,除此之外,为了计算外部访问数组的次数,该类还设置了一个计数器 accessCounter ,可以看到用户每次调用 getItem 接口,accessCounter 就会自增,很明显,这里的成员 v...
2019-04-13 17:22:52
559
原创 c++ 知识点总结:
# include<iostream.h>void f(){ static int i = 15; i++; cout<< "i=" << i << endl;}void main(){ for(int k = 0; k < 2; k++) f();}上面这段代码输出结果为 ...
2019-04-05 01:02:48
223
原创 STL 之红黑树
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点...
2019-03-28 17:17:49
1094
原创 STL 之 deque
vector 是单向开口的连续线性空间,deque 则是㆒种双向开口的连续线性空间。 所谓双向开口,意思是可以在头尾两端分别做元素的安插和删除动作,如图 4-9。 vector 当然也可以在头尾两端做动作(从技术观点),但是其头部动作效率奇差, 无法被接受。 deque 和 vector 的最大差异,㆒在于 deque 允许于常数时间内对...
2019-03-27 17:18:38
77
原创 STL之 list 和 slist
相较于 vector 的连续线性空间,list 就显得复杂许多,它的好处是每次安插 或删除㆒个元素,就配置或释放㆒个元素空间。因此,list 对于空间的运用有绝 对的精准,㆒点也不浪费。而且,对于任何位置的元素安插或元素移除,list 永 远是常数时间。 ...
2019-03-27 17:09:05
453
原创 STL 之 vector
众所周知,常用的数据结构不外乎 array(数组)、list(串行)、tree(树)、stack (堆栈)、queue(队列)、hash table(杂凑表)、set(集合)、map(映像表)… 等等。根据「资料在容器㆗的排列」特性,这些数据结构分为序列式(sequence) 和关系型(associative)两种。vector 的数据安排以及操作方式,与 array 非常像似。两者的唯㆒...
2019-03-27 16:42:28
93
原创 STL值priority_queue
顾名思义,priority_queue 是一个拥有权值观念的 queue,它允许加入新元素、 移除旧元素,审视元素值等功能。由于这是一个 queue,所以只允许在底端加入 元素,并从顶端取出元素,除此之外别无其它存取元素的途径。 priority_queue 带有权值观念,其内的元素并非依照被推入的次序排列,而是 自动依照元素的权值排列(通常权值以实值表示)。权值最高者,排在最前面。预设情况下...
2019-03-27 11:32:29
224
原创 STL之 heap
heap 并不归属于 STL 容器组件,它是个幕后英雄,扮演 priority queue的推手。顾名思义,priority queue 允许使用者以任何次序将任何元素推入 容器内,但取出时一定是从优先权最高(也就是数值最高)之元素开始取。binary max heap 正是具有这样的特性,适合做为 priority queue 的底层机制。heap是一个完全二叉树。这有一个极大好处:我们可 ...
2019-03-27 10:54:23
130
原创 STL之 stack和queue
1. stack以某种既有容器做为底部结构,将其接口改变,使符合「先进后出」的特性,形 成一个 stack,是很容易做到的。deque 是双向开口的数据结构,若以 deque 为 底部结构并封闭其头端开口,便轻而易举㆞形成了㆒个 stack。因此,SGI STL 便 以 deque 做为预设情况下的 stack 底部结构。由于 stack 系以底部容器完成其所有工作,而具有这种「修改某物接口,...
2019-03-27 09:58:06
152
原创 c++ 位运算
1. (data + 8 - 1) & (8 - 1) 把 data上调至8 的倍数,同理,也可以改成16,32...的倍数。int round_up(int n){ int temp2 = (n + 8 - 1); int temp = ~(8 - 1); cout << (bitset<num>)temp2 << endl;...
2019-03-16 21:35:37
246
转载 STL学习笔记之union obj
最近看STL源码剖析时遇到了一个有趣union的用法,简单谈谈自己的看法STL第二级空间配置器中,自由链表的节点结构如下:union obj{union obj * free_list_link;char client_data[1];};书上给的解释是这样的:“上述obj所用用的是union,由于union之故,从其第一字段观之,obj可被视为—个指针,指向相同形式的另一个obj。从...
2019-03-16 20:10:03
486
1
原创 c++中的 trivial destructor
如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如果特定定义了析构函数,则说明需要在释放空间之前做一些事情,则这个析构函数称为non-trivial destructor。如果某个类中只有基本类型的话是没有必要调用析构函数的,delelte p的时候基本不会产生析构代码。 在C++的类中如果只有...
2019-03-16 16:04:12
190
原创 关于STL源码的set_new_handler
问题背景 在阅读侯杰的《STL源码剖析》的时候,在书中的p45页遇到一段代码,书中并没有给予详细的解释,查阅资料发现网上的解释并不是那么尽如人意,在查阅了《effective C++》这本书之后,总结写出了这篇博客。书中的“问题代码”:template<class T>inline T* _allocate(ptrdiff_t size,T*){ set_new_...
2019-03-16 15:09:40
117
原创 size_t ptrdiff_t
两个指针相减的结果的类型为ptrdiff_t,它是一种有符号整数类型。减法运算的值为两个指针在内存中的距离(以数组元素的长度为单位,而非字节),因为减法运算的结果将除以数组元素类型的长度。所以该结果与数组中存储的元素的类型无关。类似的还有如下类型:(点击这里)size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_t.设计size_t就是为了...
2019-03-16 15:03:10
130
原创 c++ 六大组件与功能
STL提供六大组件,彼此可以嵌套使用。1.容器:各种数据结构,比如vector,list,set,map,deque,用来存放数据。从实作的角度看,STL 容器是一种 class template。就体积而言,这一部份很像冰山在海面下的比率。2.算法:各种算法如sort,search,copy,erase。从实作的角度看,STL 算法是一种 function template。3.迭代...
2019-03-16 14:24:38
1879
原创 leetcode 95 & 96 解题思路
95.Unique Binary Search Trees IIGiven an integern, generate all structurally uniqueBST's(binary search trees) that store values 1 ...n.Example:Input: 3Output:[ [1,null,3,2], [3,2,nul...
2019-03-15 10:26:43
241
转载 口袋算法与PLA
虽然我们证明了PLA最终会停下来,但是PLA存在以下几个问题:1、PLA假设的前提是数据线性可分,但是很多情况下都是线性不可的;2、即使PLA最终停下来,但是我们并不知道它什么时候会停下来。由于现实情况的复杂性,我们一般情况下我们几乎找不到完美的线性可分的数据,所以这时候计算机科学家们想到了一个办法,那就是找到一条线,这条线所犯的错误最少,用它来替代精准的线。数学表达式如下:上...
2019-03-08 21:31:18
458
转载 进程和线程的区别
进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。进程有五种状态:新建态,就绪态,运行态,等待态,终止态。状态之间转换如下图:线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个...
2019-03-08 10:29:14
65
原创 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解析:可以先计算最高位1的个数,然后再计算低位1的个数,找出规律...
2019-03-07 20:37:24
161
转载 在c++程序中调用被C编译器编译后的函数,为什么要使用extern “C”
c/c++函数调用约定:c/c++函数调用约定一、原题:二、详细说明:现在,在一个工程中;有一个test.c文件;一个test1.cpp文件;//test.c#include<stdio.h>int Add(int a,int b){ return a+b;}1234567(1)使用extern int Add(int,int);声...
2019-03-06 10:16:47
195
转载 C++ 中static关键字的作用
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <io...
2019-03-06 10:09:46
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人