- 博客(9)
- 收藏
- 关注
原创 机械臂匹配
机械臂匹配坐标系表示旋转矩阵求解坐标系之间进行转换 坐标系表示 父坐标系 子坐标系 如上面两个图所示,C表示坐标系,下标p表示父坐标系,下标c表示子坐标系,上标w表示世界坐标系(任意一个参考坐标系即可)。 如上两个公式本质是用世界坐标系的x,y,z坐标表示形式,来表示父坐标系和子坐标系的三个坐标轴向量(单位向量)。 旋转矩阵求解 如上图所示,通过两个坐标系矩阵(可以看成是三个3维的单位向量组成,每个单位向量表示坐标系的一个轴的方向)来求旋转矩阵。这个公式可以看成是在求解两个坐标系之
2020-10-17 15:25:31
296
原创 堆的创建,插入,删除,排序
堆是一种完全二叉树,有最小堆和最大堆之分,最小堆是指根节点的值一定小于左子树和右子树所有元素的值,最大堆则相反(当你从小到大排序时, 可以选择最小堆反之,则选择最大堆) 1.如何建立一个最小堆呢:由于堆是一个完全二叉树,所以满足以下关系(我们将元素的顺序从0开始排,第i个节点称之为Ki, 那么元素就有K0, K1, K2.....),Ki的父节点一定是K(i-1)/2, Ki的左孩子节点一...
2018-11-15 19:35:26
255
原创 C语言实现根据二叉树先序遍历和中序遍历得到后序遍历结果
二叉树先序遍历结果为aferpkwhjl, 中序遍历结果为repfwkajhl,那么后序遍历结果是什么呢? 先序遍历的顺序是:根 -左子树 -右子树 中序遍历的顺序是:左子树 -根 -右子树 后序遍历的顺序是:左子树 -右子树 -根 由此可以得到一个结论:先序遍历的第一个元素一定是树的根,中序遍历根的左侧一定是左子树的遍历结果, 右侧一定是 右子树遍历的结果 那么这道题的解决思路是:1.根据先序遍...
2018-11-15 10:55:59
6624
原创 explicit关键字
当构造函数只有一个参数或有n个参数,但有n-1个参数有默认值时 class A { public: A(int a, int b = 10) x(a),y(b){} private: int x; int y; }; A a(1);//定义一个对象a A a = 1;//虽然有点莫名其妙,但在编译器看来这合法的,编译器会用1来建立一个A类对象,等效于A a(1);或A b(1)...
2018-11-09 14:28:56
155
原创 class与typename区别
1.一般情况下,在声明一个模板类型参数是,class与typename一样 2.当类型为嵌套依赖类型时,在类型名前加typename,如: typename std::iterator_traits(Iterator)::value_type t; 这里std::iterator_traits(Iterator)::value_type是一个嵌套依赖类型,所以要在前面加typename(不加ty...
2018-11-08 20:28:22
2131
原创 C++自定义迭代器(STL)
一.iterator_traits #include template <class Iterator> struct iterator_traits { typedef typename Iterator::difference_type differebce_type; typedef typename Iterator::value_type value_
2018-11-08 16:16:19
1675
原创 c++中new/delete与new[]/delete[]
1.new,delete不是函数而是C++中的关键字 2.new与malloc的区别:malloc只申请内存空间,而不进行初始化 new可以进行初始化:string *a = new string("hello"); 3.operator new 与operator delete,operator new[]与operator delete[]:他们都是c++的库函数,使用new/delete与 ...
2018-11-07 20:32:26
194
原创 构造函数
1.初始化列表:(1).构造函数在初始化列表中进行初始化过程,在函数体中进行赋值过程。所以在进入构造函数体之前对象的 所有成员变量(对于内置类型是否如此,我不太清楚)都已完成初始化过程 (2).对于内置类型如int,float等,在初始化列表中进行初始化和在构造函数体中进行赋值差别不大 (3).对于类类型,如果没有在初始化列表中进行初始化,则调用默认构造函数,如无默认构造函数,可能无法 执行。 (...
2018-11-07 20:32:07
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人