C/C++基础
Open_PI
一个转型IT的体育生……
展开
-
(学习记录)无默认构造函数时如何定义该元素的数组
当某一个类没有默认构造函数时,定义该对象的数组时,编译器会报错: error C2512: “A”: 没有合适的默认构造函数可用 出现这种问题时,可以采用new()重载的方式进行解决,采用这种方法必须包含头文件,实现代码如下: class A { public: A(int _a) { a = _a; cout << "构造函数 " << a << endl; } ~A() { cou原创 2018-01-23 17:34:06 · 863 阅读 · 0 评论 -
浅谈C语言 if else, switch, 条件运算符, 函数指针的选择问题
最近在写一个程序,其中有一个关键部分需要很多分支语句,由于这段代码需要被大量调用,所以效率问题自然成为了关键,在网上搜索了许多帖子,看到对这种情况的处理大概有 if else,switch,条件运算符以及函数指针四种方式。借助vs2015,查看了以下这这几种方式的反汇编,下面是对每种情况进行简单的分析: 假设我们有十种选择,分别是0,1,2,3,4,5,6,7,8,9。按照从前的思维方式,很自然原创 2018-01-10 14:33:34 · 800 阅读 · 0 评论 -
list iterator not dereferencable
这可能是我写的最短的博客…… 出现这个问题一般有两种情况,第一种是访问到了list.end()节点,检查这种情况的方式是在循环的开头处写一个判断, if(list.end() == something)return; 第二种比较特殊,即访问到了list.begin()前面的节点。如果是倒序遍历,可以采用与上一行相同的方式进行判断, if(list.rend() == something)r...原创 2018-08-12 16:45:00 · 2307 阅读 · 0 评论 -
Harris角点检测的实现(cv::Mat && c++)
原文链接或Google “A COMBINED CORNER AND EDGE DETECTOR”可以找到Harris角点检测的论文。 简单的概括一下,Harris角点检测的原理为,通过计算论文中的R来判断某一个像素点是否为角点,通常情况下,当R为正数且较大时,该点为角点。若R为负数且绝对值较大时,该点为边缘点。若R的绝对值较小,则该点通常位于光滑区域。 计算R需要两个基本量,一个为dx,另一...原创 2018-11-02 11:32:34 · 697 阅读 · 0 评论 -
Canny边缘检测的c++&&OpenCV实现
Canny边缘检测算法是一种比较常见且效果较好的边缘检测算法,其优点在于得到的边缘为单像素边缘,但是速度较Sobel等边缘检测算法较慢。网上Canny算法的算法介绍很多,此处不仔细写了,主要分为五步,分别是:高斯去噪,梯度计算、梯度方向计算、非极大值抑制和双阈值边缘抑制。其中,非极大值抑制保证了边缘检测结果为单像素边缘,双阈值边缘抑制的作用为去掉孤立的低阈值边缘。以下代码为Canny算子的简单实现...原创 2018-12-20 19:13:59 · 936 阅读 · 0 评论 -
关于c++11 std::vector 使用元素指针时需要留意的一点
这几天在写VO,需要实现一个功能,将二维坐标点按坐标放在平面上的网格里。这个功能很简单,但是为了节约一点内存,我打算将坐标点的指针放到网格里面,需要的时候用指针操作即可: vector< vector <vector <keypoint*> > > cells; 然而在实际使用的时候却发现,有一大批的点的坐标居然被修改了。我非常确定的一点就是没有地方可以...原创 2019-02-01 15:26:41 · 2523 阅读 · 0 评论