![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++相关
文章平均质量分 73
wonengguwozai
欢迎爱技术的同行交流
展开
-
使用asan检测内存泄漏、堆栈溢出等问题
c++内存问题调试原创 2023-03-16 17:45:31 · 2724 阅读 · 0 评论 -
跨平台代码移植(mac[Xcode]->vstudio)相关问题
c++代码跨平台移植原创 2022-08-17 17:50:20 · 373 阅读 · 0 评论 -
Eigen:常用功能速查
引:本文参考https://zhuanlan.zhihu.com/p/362461462而来,并对其中中文部分进行了解释和补充,此外记录了笔者在学习这些内容时一些疑问点的验证。详细的说明可参照eigen官方文档:链接一、疑问点验证1、Matrix矩阵默认是按列优先存储(若要按行存储要指定 如Matrix<double, 3, 3, RowMajor> ),那为什么执行如下命令得到的还是按行存储的呢?Matrix<int, 3, 4, ColMajor> Acolmajo原创 2022-05-29 13:15:53 · 2961 阅读 · 3 评论 -
c++理论相关知识点_Aibee
1. vector的实现原理(详细含代码解析可参照:https://blog.csdn.net/qq_36534818/article/details/76559835)* 内部实现如图:* vector的数据安排及操作方式与array非常相似。两者的唯一差别在于空间运用的灵活性。array是静态空间,一旦配置好了就不能改变了,如果程序需要一个更大的array,只能自己再申请一个更大的array,然后将以前的array中的内容全部拷贝到新的array中。vector是动态空间,随着元素的加入,它原创 2021-03-25 14:32:01 · 192 阅读 · 0 评论 -
UML类图基础整理
UML类图基础整理缘起:本人在做算法产品化过程中意识到类图在程序架构设计中的重要性。此外,一个好的程序架构设计离不开设计模式的使用,设计模式的描述同样也离不开类图的表示。基础表示泛化:表示:使用一段带有三角形箭头实线表示(见下图)。诠释:是一种is-a的关系代码体现:类继承实现:表示:使用一段带有三角形箭头虚线表示(见下图)。诠释:是一种类与接口的关系, 表示类...原创 2020-04-07 12:32:01 · 301 阅读 · 0 评论 -
c++ 使用枚举类型统一接口
背景:提供的算法库包含不同子算法:人脸跟踪和目标跟踪,两个算法提供的接口(返回的结果)中均提供跟踪状态值(正在跟踪,目标暂时丢失,等等多个值)可供上层调用算法库使用(不同算法的统一跟踪状态对上层的作用是一致的)。但在两个算法内部定义不同跟踪状态所使用的值是不统一的,如目标跟踪使用1代表正在跟踪,人脸跟踪使用0代表正在跟踪。这样上层在调用算法库时需要根据不同算法判断每个值代表什么状态,这样给上层调...原创 2020-03-27 17:08:56 · 677 阅读 · 0 评论 -
STL 模板库中迭代器 iterator 失效问题
在做线上测试是涉及到vector 的相关迭代器操作,引出迭代器失效问题,这里mark一下。如下程序是运行不起来的:#includeusing namespace std;#includeint main(int argc,char *argv[]){ vector vs_int; vs_int.push_back(0); vector:: iterator iter = vs原创 2017-10-16 18:33:22 · 306 阅读 · 0 评论 -
VS2015安装Qt5
需要素材:vs2015(已安装)Qt(与vs版本匹配):链接(可镜像下载)VS2015的Qt插件:Qt5Package安装过程:vs安装(略)Qt安装按照提示和自己本身需求安装即可(或默认安装)配置Qt环境变量,如在环境变量中加入:\Path\Qt5.6.0\5.6\msvc2015_64\binVS的Qt插件(Qt5Package)安装:点击安装即可安装完...原创 2019-01-04 17:03:47 · 909 阅读 · 0 评论 -
VS建立项目属性表,摆脱在不同工程中反复配置依赖
缘起:在基于一些开源的包(如opencv、pcl)进行程序开发时,如果在不同的VS项目中用到相关包,则需要每个项目都要配置库文件的包含目录、库目录以及库文件等,非常麻烦。因此通过建立属性表解决这个问题就水到渠成了。说明:由于配置过程并不复杂,且已有很多相关优秀博文,下面只是简要引用和说明下配置过程。主要过程:配置属性表:该过程主要参照了:链接使用配置好的属性表:打开菜单栏View(...转载 2019-01-09 17:31:00 · 845 阅读 · 0 评论 -
通过vs的资源文件为exe/dll创建版本信息--菜鸟版
说明:该方法为比较粗鄙的方法,若要实现根据代码提交实现动态变化的版本号需要使用svn提供的SubWCRev 程序建立动态变化的svn版本号。步骤:在要添加版本号的项目名右键,选择添加资源文件。如下图选择version,点击新建。如下图在新建的项目版本视图文件中,填写对应的相关信息保存即可。如下图注意上方的文件版本(没更新一次文件增加一次)和产品版本(每发布一次产品增加一次)的区...原创 2019-06-18 18:33:44 · 951 阅读 · 0 评论 -
c++ boost 库中提供的share_ptr(智能指针)
共享指针 (shared_ptr) 是现在的 Boost 库中提供的,并且应该是将来 C++1x 的标准库中提供的一个模板类。在此之前,ISO/IEC 14882:2003 标准库 中的“自动指针 (auto_ptr)”也有类似的功能。显然 shared_ptr 要比 auto_ptr 从功能上来说应该强大一些。这篇文章主要介绍 shared_ptr 的最基本用法和注意事项,相当于入门级多一转载 2017-07-28 15:32:30 · 450 阅读 · 0 评论 -
OpenCv 如何对图像的像素进行操作(注意多通道图像在内存中的存储方式!!)
对图像的像素进行操作,我们可以实现空间增强,反色等目的。让我们先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的:如果图像是一幅灰度图像,他就像这样,从左到右,从上到下,依次是矩阵的每一行每一列,这时候矩阵M(i,j)的值自然就是当前点的灰度值了。而对于一幅彩色图像,由于它的像素分量channel并不是一个,所以每一列又分为了几个channel。拿常见的R转载 2017-08-03 20:51:30 · 6863 阅读 · 1 评论 -
视频目标检测中关于对检测出的目标进行”安全处理“问题
最近做视频的目标识别和追踪计数,编译连接均没有问题,但是在测试时出现了问题,只要标出的box与视频的边界接触就会出现程序崩溃,并提示出opencv的断言提示:OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width<= m.cols &...原创 2017-08-09 16:59:49 · 4150 阅读 · 1 评论 -
linux下如何用GDB调试c++程序
原文地址:http://blog.csdn.net/wfdtxz/article/details/7368357 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道转载 2017-08-08 18:01:54 · 283 阅读 · 0 评论 -
boost总结之variant
boost 是 C++“准”标准库(在低版本的标准库中没有,只能额外安装boost库,在较新的c++版本标准库已经加入了boost)。下面主要学习boost库中variant的用法:boost的variant库类似于联合体,但是联合体中只能接受POD类型,但variant中并无此限制,它可以接受任意的类型. boost::variant int, std::st转载 2017-07-22 19:23:25 · 921 阅读 · 0 评论 -
Google gflags使用说明(处理命令行参数的库)
原文地址:http://blog.csdn.net/lezardfu/article/details/23753741flags是什么:gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt。gflags使用起来比getopt方便,但是不支持参数的简写(例如getopt支持--list缩写成-l,gflags不支转载 2017-07-22 11:09:57 · 1241 阅读 · 0 评论 -
c++11的一些新特性
区间迭代:我的实例匿名函数:我的实例,详细解释原创 2019-03-18 20:33:39 · 109 阅读 · 0 评论 -
c++库函数解析
memset:函数原型:void *memset(void *s, int ch, size_t n);函数功能:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值(通常设置0), 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针,它是对较大的结构体或数组进行清零操作的一种最快方法。重要提示:...原创 2019-04-17 11:24:10 · 425 阅读 · 0 评论 -
c++ Virtual关键字在类构造、析构函数使用与内存泄漏
使用原则:类的构造函数不能是virtual函数,而类的析构函数可以且在类的继承中基类的析构函数通常为虚函数。原因分析:类的构造函数不能是虚函数:通俗地理解构造函数的作用就是为当前类创建对应的对象,如果为虚函数,则创建的不能为当前类创建对象,违背了构造函数的原则。类的析构函数可以是虚函数:理论上,由于类的析构函数为虚函数是合理的。而且,在继承层级的具体实现中,一般都是用父类的指针指向子类对...原创 2019-09-19 18:21:25 · 603 阅读 · 0 评论 -
踩过的c++的一些坑
承接函数返回结果的句柄不要使用二级指针,更准确地说不要通过回传数据地址的方式承接函数返回结果,因为函数结束后,相关的资源(包括相关数据)都会回收,此时承接函数返回的地址,此时的地址是释放后的、无效的。正确的做法是直接承接函数的返回值(数值)或通过拷贝内存的方式进行返回。以下是遇到的坑:算法库是通过初始化出一块内存(创建一个环境句柄),将环境句柄在不同调用需求中使用。该句柄包含了程序各功能类(...原创 2019-08-17 16:34:18 · 150 阅读 · 0 评论 -
c++11_多线程_3:mutex
mutex的作用:保证线程安全。即多个线程访问同一资源时,为了保证数据的一致性,最简单的方式就是使用 mutex(互斥锁)。接下面介绍几种加锁形式。第一种形式:lock/unlock形式(直接对共享的资源加锁和解锁,注意:加和解的必须是同一把互斥锁,在加锁和解锁之间的部分均可保证数据一致性),这种形式的弊端是如果在解锁前程序出现异常,那么互斥锁将不能正常解开,程序陷入死循环。#inc...原创 2019-08-12 21:11:53 · 255 阅读 · 0 评论 -
c++11_多线程_4:condition_variable
引:由上一篇mutex的介绍,基本可知通过设置mutex锁可以解决不同线程修改共享变量的线程安全问题。然而,有些时候并不止要求不同线程间访存的数据安全,而且需要各线程按照某一顺序进行访存或执行,这种情况就需要通过设置condition variable(条件变量)实现。条件变量的一般用法是:线程 A 等待某个条件并挂起,直到线程 B 设置了这个条件,并通知条件变量,然后线程 A 被唤醒。经典的 ...原创 2019-08-14 16:47:16 · 290 阅读 · 0 评论 -
c++11_多线程_2:线程的join与detach(番外:适配器)
线程的join与detachjoin与detach理论上的区别与作用,已在上一篇说明,这里不在赘述。实例#include<thread>#include<iostream>#include<algorithm>#include<vector>#include<windows.h>class WorkThread...原创 2019-08-07 10:23:02 · 320 阅读 · 0 评论 -
c++11_多线程_1:多线程机理
c++11线程介绍在c++11标准线程库之前的相关线程库:要么是属于某个单独平台的,例如:POSIX线程库pthread(Linux),Windows线程库(Windows winapi);要么需要第三方库支持,如第三方数据库:Boost线程库。线程与进程显著区别:不同线程间可共享同一地址资源(内存、全局变量);不同的进程间拥有独立的地址空间,相互间不共享。线程的几个状态在一个线程的生...原创 2019-08-07 10:15:19 · 211 阅读 · 0 评论 -
谈谈c++的仿函数(或称函数对象)
缘起:在c++ STL中泛型算法for_each()的使用中提到了仿函数的使用,这里从实例的角度出发,分析c++ 中的仿函数。定义及使用方式:c++ 仿函数(仿函数不仅在c++ 语言中有,如Java)即为类对象能像函数那样调用使用。c++中通过在类的定义中重载()运算符实现。注意:仿函数在使用时与构造函数本质的区别是:构造函数是在声明(定义)类对象的时候调用;而仿函数是已定义好的类对象上进行...原创 2019-08-04 17:28:43 · 895 阅读 · 0 评论 -
c++:论类成员变量初始化的不同方式与顺序
缘起:在看c++ 代码是发现,类成员中的变量在类定义时直接进行了初始化(赋值),这对于我一直使用初始化列表或构造函数对类的成员变量进行初始化的程序员来说有点新奇,于是找了各例子,进行了下总结。例子#include<iostream>using namespace std;class Test {public: int a = 1; Test() {} Test(i...原创 2019-08-03 15:41:23 · 542 阅读 · 0 评论 -
通俗理解动态库与静态库区别
引:最近做了算法产品化相关的一些工作,其中涉及到算法库封装的相关工作,封装为动态库。总结动态库和静态库区别和对应使用原则。区别:静态库和动态库最本质的区别就是:该库是否被编译进目标(程序)内部。分别介绍:静态(函数)库一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成...原创 2019-06-21 15:27:46 · 26800 阅读 · 1 评论 -
C调用C++(C++封装以及C对其调用)
编译器:gcc和g++编译器区别gcc是c语言编译器(也可处理c++);g++是c++编译器g++对.c和.cpp文件都当c++处理;gcc对.c文件当作c处理,对.cpp当做c++处理g++编译器在使用时其实调用的是gcc编译器gcc不能自动链接库文件(.so等),一般用g++来自动链接库文件,要一定使用gcc则需要加上-lstdc++参数(使用libstdc++.so库)g...原创 2019-05-05 20:39:48 · 1127 阅读 · 0 评论 -
c++ 很隐蔽的指针访问越界--在类型转换中出现情况
template void Mat::Read(char *ImageName) //从硬盘文件中读入图像数据;{ IplImage *img =cvLoadImage( ImageName , 0); T *img_data = (T *)(img->imageData); int width_step=img->widthStep; width=img->width; heigh原创 2017-05-28 10:07:51 · 586 阅读 · 0 评论 -
在调试时出现:~处有未经处理的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突
这个0xcccccccc是DEBUG模式下,编译器为没有初始化的指针填充的地址值。当你进入到断点时,也会看到很多其他的未初始化的指针都是这个值 究其原因,就debug版中的堆栈中的局部变量(包括指针)在明确初始化之前都用0x0cc进行初始化,因此,未初始化时 候的指针是指向地址0x0cccccccc的,而这段地址一来是处于内核地址空间,一般的应用程序是无权访问的,上面的报错原创 2017-05-28 10:06:32 · 13521 阅读 · 2 评论 -
形态学运算
形态学运算:腐蚀,膨胀,开运算,闭运算:址:http://blog.163.com/yuyang_tech/blog/static/216050083201381111256369/数学形态学是法国和德国科学家在研究岩石结构时建立的一门科学。形态学的用途主要是获取物体拓扑和结构信息,通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。在图像处理中的应用主要是:利用形态学的基转载 2017-03-22 10:33:34 · 649 阅读 · 0 评论 -
类模板、函数模板以及类成员函数在类外定义情况
1函数模板的写法函数模板的一般形式如下:Template 返回类型 函数名(形参表){//函数定义体 }说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个 ,每个形参前都要加class 可以包含基本数据类型可以包含类类型。请看以下程序:[cpp] view plain cop转载 2016-08-03 21:09:49 · 15773 阅读 · 1 评论 -
C++问题,对象包含与成员函数不兼容的类型限定符
在编写Image 的构造函数时:Image::Image(const Matrix &m) //构造函数重载,由Matrix类对象构造Image类对象(Matrix类是image类的父类){height=m.Height();}其中Height()是Matrix 类的成员函数,返回矩阵的高;标红的m.Height();提示 : Error 对象包含与成员函数不原创 2016-07-19 16:45:56 · 13854 阅读 · 0 评论 -
无法解析的外部符号 "public: __thiscall***,该符号在函数***中被引用
当时出现的问题是情况1,注意在面向对象编程中,对象定义时,如果析构函数没有定义的话,也会提示这类错误(这种情况的错误比较隐蔽)链接错误:出现这个2001错误,是因为链接失败,然而链接失败,又是因为以下原因: 1.你在头文件中声明了函数,但是cpp文件缺少了函数实现部分。 2.忘了将这个.h,.cpp Add to project; 3.以上两种情况都没有做转载 2016-07-19 13:23:19 · 10629 阅读 · 0 评论 -
win7+opencv2.4.10+vs2010配置问题之LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d2410d.lib” 1>
参照下面链接添加库文件和包含文件,以及附加依赖项http://johnhany.net/2013/11/environment-for-opencv-with-vs2010/#image-336添加完库文件和包含文件,以及粘贴完附加依赖项后,运行相应的项目,报错:1>LINK : fatal error LNK1104: 无法打开文件“opencv_calib3d2410d.lib原创 2016-07-19 13:17:03 · 3628 阅读 · 0 评论 -
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
vs2010建立Win32 Console Project项目时会出现"LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏"的错误。错误描述:> 正在创建“Debug\Inherit.unsuccessfulbuild”,因为已指定“AlwaysCreate”。1>ClCompile:1> 所有输出均为最新。1>原创 2016-07-19 13:13:23 · 381 阅读 · 0 评论 -
C++函数的返回值——返回引用类型&非引用类型
在海大本科课程设计的 继承实验中 Matrix 类的成员函数 unsignedchar& At(int row, int col); //获取第row行第col列的矩阵元素的值 涉及到了返回引用类型的函数返回值:函数的返回主要分为以下几种情况:1、主函数main的返回值:允许主函数main没有返回值就可结束;可将主函数main返回的值视为状态指转载 2016-07-17 08:58:13 · 834 阅读 · 0 评论 -
c++实现图像旋转任意角度
图形图像处理-之-任意角度的高质量的快速的图像旋转 上篇 纯软件的任意角度的快速旋转 HouSisong@GMail.com 2007.04.26 (2009.03.09 可以到这里下载旋转算法的完整的可以编译的项目源代码: http://blog.csdn.net/housisong/archive/2009转载 2016-07-27 20:21:18 · 24485 阅读 · 5 评论 -
图像缩放算法(用过了邻近差值算法)
昨天开始写一个录制屏幕和声音存储为视频文件的程序,差不多完成了。屏幕录制使用方法:抓屏(方法很多,BitBlt、DirectX、MirrorDriver等),缩放,X264压缩(开源的,自己封装)声音录制使用方法:声卡采集PCM数据,AAC压缩(开源的,自己封装)最后打包复用为MP4文件,可以使用ffmpeg或者mp4v2等。经过断断续续一天的时间,程序基本写好了,转载 2016-07-26 21:57:22 · 2855 阅读 · 3 评论 -
程序在vs2010下能运行,独立运行生成的exe文件时会崩溃。
解决方法:程序在vs2010下的debug和release模式下均可执行,但生成的exe文件运行会崩溃。原来问题出在调用文件的路径上,如果在程序中有涉及到打开文件等操作,把那个.exe程序复制到跟.cpp文件同一个目录下(更准确地说是工程路径下)就行。...原创 2016-06-11 21:52:43 · 5991 阅读 · 5 评论