C++
文章平均质量分 70
Leckun
这个作者很懒,什么都没留下…
展开
-
解决Linux下编译Intel oneTBB动态库出错的问题
查找了很多文章,有的说GCC版本太低之类的,没有CXXABI_1.3.8和GLIBCXX_3.4.21之类的。在CMakeLists.txt中,原来有一段这样查找和链接的配置代码。原创 2023-10-24 18:09:26 · 756 阅读 · 0 评论 -
利用stl set_difference对车辆进出区域进行判定
struct _AREA_VECTOR_STRUCT{ int nAreaType; int nAreaID;};void CtestDlg::OnBnClickedButton2(){ vector structAreaHistory; vector structAreaNow; vector OutStructAreaVector; _AREA_VECTOR_STRUCT structVehi原创 2016-09-05 14:13:59 · 758 阅读 · 0 评论 -
使用find_if的自定义条件查找vector或map
vectortestStructVector;void CtestDlg::OnBnClickedButton1(){ testStruct struct1; for(int i = 0; i < 5; i++) { struct1.a = i; struct1.b = i + i; testStructVector.push_back(struct1); } au原创 2016-08-26 10:27:41 · 3159 阅读 · 0 评论 -
使用set_union对vector结构体进行去除重复值并合并
set_union对vector结构体进行去除重复值并合并vectortestStructVector1;vectortestStructVector2;vectorunionVector;void CtestDlg::OnBnClickedButton2(){ testStruct struct1; for(int i = 0; i < 5; i++) { st原创 2016-08-26 10:11:13 · 2997 阅读 · 1 评论 -
关于CString初始化时提示字符串太大的解决
问题代码:CString str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567原创 2017-04-21 11:27:28 · 8323 阅读 · 1 评论 -
offsetof与container_of宏[总结]
1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认转载 2017-07-05 09:39:09 · 280 阅读 · 0 评论 -
c++的vector赋值方法汇总
#include #include using namespace std; void main() { vectorivec1(10,42); //内置方法,初始化的内容为10个42 vectorivec2(10); vector::size_type ix=0; for(ix;ix转载 2017-10-10 09:50:19 · 15984 阅读 · 0 评论 -
C++将无结束符字符串(ASCII)转为数字数值的快速方法(支持16进制)
通常情况下的字符串转为数字,可以使用C的atoi,或者C++的sstream来转换,但是这要求待转换源字符串要有\0结束符,如果只想转换字符串中一部分,或者转换char*中不带结束符的字符串的时候,以上的方式均需要将字符拷贝出来并且给出结束符才能进行下一步转换,有了拷贝的动作转换的速度就慢了,以下的方法是根据ASCII字符对应数值的特点循环将字符转换为数字数值的函数,并支持16进制。原创 2017-10-25 08:47:42 · 6837 阅读 · 0 评论 -
DBSCAN聚集算法改进,可用于车辆GPS经纬度聚集计算
1、DBSCAN简介DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所原创 2016-09-08 09:52:11 · 10608 阅读 · 51 评论 -
C++ string的trim, split方法
很多其他语言的libary都会有去除string类的首尾空格的库函数,但是标准C++的库却不提供这个功能。但是C++string也提供很强大的功能,实现trim这种功能也不难。下面是几种方法: 1.使用string的find_first_not_of,和find_last_not_of方法 /* Filename : StringTrim1....转载 2018-07-23 16:39:43 · 7682 阅读 · 0 评论 -
scanf引起的内存越界问题
问题代码如下:BYTE nYear=0, nMonth=0, nDate=0, nHour=0, nMin=0, nSec=0; sscanf_s("2016-08-12 13:14:15", "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);运行后,VS2010提示Run-Time C原创 2016-08-12 09:42:17 · 2592 阅读 · 0 评论 -
tesseract验证码训练部骤
先简单记录下,以后再详细1、使用jTessBoxEditor将验证码jpg文件merge tif合并成一个tif2、生成boxtesseract eng.ver.exp0.tif eng.ver.exp0. -psm 7 -l eng batch.nochop makebox3、使用jTessBoxEditor对box文件对比tif一个个字符校正原创 2016-05-09 17:30:38 · 1216 阅读 · 0 评论 -
64位网络字节序与主机字节序转换
unsigned long long ntohll(unsigned long long val) { if (__BYTE_ORDER == __LITTLE_ENDIAN) { return (((unsigned long long )htonl((int)((val > 32))) > 32)); } else if (__B转载 2015-12-01 14:36:16 · 6111 阅读 · 0 评论 -
PPL 和AMP并行编程
根据我的理解,PPL是指Parallel Patterns Library,这是微软为了提出并行计算(就是现在的C++ AMP)而在Visual Studio2010中引入的提供了类似于标准模板库 (STL) 的编程模型:并行模式库。具体MSDN上关于PPL的介绍参见:Parallel Patterns Library (PPL)C++ AMP也是同样类似于标准模板库(STL)转载 2015-09-30 14:36:11 · 1091 阅读 · 0 评论 -
C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。 char *pChar = "hello";转载 2015-10-30 09:09:16 · 318 阅读 · 0 评论 -
GCC在C语言中内嵌汇编 asm __volatile__
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"转载 2015-10-30 09:11:08 · 755 阅读 · 0 评论 -
C++11中的原子操作(atomic operation)
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往往是使用汇编语言,或者是借助第三方的转载 2015-10-30 09:14:56 · 727 阅读 · 0 评论 -
存储过程Append 二进制 _ParameterPtr“不正常地定义参数对象。提供了不一致或不完整的信息”
使用ado调用存储过程,CreateParameter其中一个参数为image类型,当插入的二进制长度为空时,出现“不正常地定义参数对象。提供了不一致或不完整的信息”错误。代码如下[cpp] view plaincopySAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; rgsabound[0转载 2015-09-01 18:50:47 · 1318 阅读 · 0 评论 -
简单理解static_cast, dynamic_cast, reinterpret_cast和const_cast的区别和应用
dynamic_cast:动态类型转换 static_cast:静态类型转换 reinterpret_cast:重新解释类型转换 const_cast:常量类型转换 dynamic_cast一般用在父类和子类指针或应用的互相转化; static_cast一般是普通数据类型(如int m=static_cast(3.14)); reinterpret_cast很像c的一般转载 2015-12-10 09:35:50 · 397 阅读 · 0 评论 -
C++11中的匿名函数(lambda函数,lambda表达式)
这篇文章是根据维基百科整理来的,原文请看:http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: [capture](parameters)->return-type{body} 如果没有参数转载 2015-12-10 17:08:19 · 519 阅读 · 0 评论 -
“CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
例子:typedef struct tagMyStruct{CArray strMyArray;}MyStruct;这样子写会报“CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)错误,解决方法:从CObject派生的类,传参时请用指针!并在构造函数里new一个新实例。typedef struc原创 2015-10-30 18:35:10 · 5323 阅读 · 0 评论 -
点在多边形内的算法(C++和JavaScript版 )
C++,其中 npol是多边形顶点的数量,xp,yp是多边形顶点数组,x,y是某个点int pnpoly(int npol, float *xp, float *yp, float x, float y) { int i, j, c = 0; for (i = 0, j = npol-1; i < npol; j = i++) { if ((((转载 2015-12-15 15:34:15 · 2650 阅读 · 0 评论 -
一个CAsyncSocket例子
server 端:建个类作为server socket,主要处理OnAccept消息。class CMySocket : public CAsyncSocket其中包含几个虚函数 virtual void OnAccept(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void On转载 2015-10-16 14:09:11 · 1710 阅读 · 0 评论