C++
周旭光
2013年6月毕业于福州大学,目前在北京的互联网地图厂商从事地图渲染引擎的研发工作,专注于GIS,专注于C++。如果有什么事可以通过邮箱zhouxuguang236126.com联系到我,也可以加我QQ672218231
展开
-
iOS编译openmp
iOS编译openmp。原创 2022-08-22 19:52:38 · 861 阅读 · 2 评论 -
intel -tbb 源码cmake构建
Android上还没找到编译出so的方法,mac和iOS已经编译成功。cmake -DTBB_ROOT=tbb根目录 ../原创 2022-08-15 19:27:37 · 1069 阅读 · 0 评论 -
VC中unicode环境下CString转char*的方法
在VC编程中,经常要用到字符串的转换,可以说,字符串转换对于VC新手甚至是老手也都是一个比较头疼的问题。在多字节环境下下也就是用ASCII环境下,Cstring转char*可以使用如下代码: CString strXcoord; GetDlgItemText(IDC_EDIT_XCOORD,strXcoord); CString strYcoord; GetDlgItemT原创 2013-07-24 10:52:00 · 3155 阅读 · 2 评论 -
C++插件架构浅谈与初步实现
一、插件架构初步介绍 想到写本博客,也没想到更好的名字,目前就先命这个名吧。说到插件架构,或许大部分IT从业者都听过或者某些牛人也自己实现过稳定高效的插件框架。目前有很多软件以及库都是基于插件架构,例如PS、我所在行业的GIS软件如Arcgis、QGIS、还比如开源图形引擎OGRE以及OSG,这些都是插件架构,通过插件架构来进行功能的扩展。那到底什么事插件架构呢?我的理解是系统运行时在需要某原创 2014-06-08 15:16:29 · 32316 阅读 · 4 评论 -
C/C++中二维数组和指针关系分析
在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述方便才叫它二维数组。 在本文中,我也就叫它二维数组。在C/C++中,二维数组是数组的数组。数组的每一个元素是一个数组。说起来有点绕,大家都知道,一维数组也和指针那关比较密切,在本文中不重点阐述,下原创 2013-10-03 18:02:51 · 55451 阅读 · 20 评论 -
有序二维数组中搜索特定的数
关于二维有序数组中搜索,其题目如下:给定一个矩阵,都是整数,每一行从左到右升序,每一列从上到下有序,例如下面的矩阵[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]请用最快的时间找出特定的数,例如,输入3,存在这个数,输入15,不存在这个数。实现如下的函数bool FindArray(int *pArray,int nWid原创 2014-08-27 20:00:24 · 4558 阅读 · 2 评论 -
数字在排序数组中出现的起始索引号
题目如下:给定一个升序的整数数组,查找某一个值在数组中出现的索引号,例如,输入数组2,3,3,4,4,5;查找的数是3,则返回1,2。时间复杂度要求为O(logN)。 初次拿到这个题目可以立即想到用二分查找来做,先比较中间的数和要查找的数,如果关键字(要查找的数)小于中间的数,那么在数组的左半部分继续查找,如果关键字大于中间的数,那么在数组的右半部分继续查找,如果关键字和中间的数相等原创 2014-08-28 21:13:08 · 3030 阅读 · 0 评论 -
跨平台C、C++代码注意的事项
在我们的开发中,跨平台的需求越来越强烈,如何保持C/C++代码能在多个平台上编译,是一个比较值得研究的问题。关于跨平台的文章网上很多,跨平台的库网上也很多。那么我从自己的跨平台开发经验谈一谈自己的心得,希望对大家能够起到一定的作用。主要涉及到Windows和linux两个操作系统。1、 关于路径和头文件路径分隔符的问题在Windows中,正斜杠和反斜杠都可以,但是在Linux中,只能是/。在Wi原创 2015-04-21 09:49:03 · 8614 阅读 · 2 评论 -
常用位操作的c++实现
看到这个标题,可能大家会误解,其实就是贡献几个比较实用的运用位运算实现的操作,这对于加快程序的运行速度很有帮助。具体的实现是参考http://graphics.stanford.edu/~seander/bithacks.html实现的。 下面给出其函数声明及其实现。 //判断该整数是否是2的整数次方bool IsPowerOfTwo (unsigned int value);boo原创 2016-10-10 20:40:22 · 3232 阅读 · 0 评论 -
VS2008配置NDK开发环境
看到很多网上的文章都有写VS配置NDK开发环境,我是参考了其中的一篇文章,连接是点击打开链接。但是这篇文章里面的配置不能关联Application.mk文件。所以觉得不是很方便,经过一阵摸索,终于找到一个可以 关联Application.mk文件的方法。软件准备:1、VS20082、NDK具体步骤如下:1、打开VS2008,新建Makefile工程。2、在设置中设置编译、重新编译、清理的命令,de原创 2016-12-02 23:28:42 · 4366 阅读 · 0 评论 -
c++三种使用shared_ptr的方式
在c++中,我们是越来越多的使用智能指针,其中我们说的智能指针通常是指基于引用计数的智能指针,在c++11标准中就是std::shared_ptr。它的特点是可以安全的放入STL容器中。有以下三种方式可以使用shared_ptr1、如果你的c++编程环境支持c++ 11标准,那么可以直接使用std::shared_ptr,它定义在memory文件中。2、如果你的c++实现支持C++ T...原创 2016-09-11 15:48:27 · 8803 阅读 · 0 评论 -
C/C++获得对齐的内存的跨平台解决方案
在C/C++开发的时候,有时候需要获得内存对齐的内存块,这一需求主要源于多媒体指令集需要内存对齐的内存块,这样处理速度会快一点。例如SSE/SSE2/MMX/AVX等指令集都需要对齐的内存。这些多媒体指令集常用于语音合成、图像处理、3D图形学等领域。下面是封装的内存对齐的内存分配函数。void* aligned_malloc(size_t size, size_t align){ voi原创 2016-12-09 20:54:45 · 3259 阅读 · 2 评论 -
C++ STL copy函数效率分析
在C++编程中,经常会配到数据的拷贝,如数组之间元素的拷贝,一般的人可能都会用for循环逐个元素进行拷贝,在数据量不大的情况下还可以,如果数据量比较大,那么效率会比较地下。而STL中就提供了一个专门用来进行容器元素拷贝的函数copy。 copy的函数原型如下: template OutIt copy(InIt first, InIt last,原创 2013-09-01 19:43:29 · 8670 阅读 · 3 评论 -
关于C/C++的几点认识
从学习C语言开始,已经接触这门语言好几年了,不敢说有多精通,本文就本人以往遇到过的几个问题做一个说明。1、认识C语言的安全隐患。 首先,我们来看一个简单的例子。 int nData = 50;char szBuf[20]; memset(szBuf,0,20);strcpy(szBuf,(const char*)&nData);我们常见的strcpy函数一般是用来复制字原创 2013-07-22 20:26:47 · 2225 阅读 · 0 评论 -
windows多线程详解
在一个牛人的博客上看到了这篇文章,所以就转过来了,地址是http://blog.csdn.net/morewindows/article/details/7421759本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什转载 2012-07-23 14:26:35 · 67477 阅读 · 2 评论 -
tiff文件读取
以下是VC下读取TIFF文件的代码char* szFileName = "K:\\地图\\fujian-DEM\\fujian1.tif"; TIFF* tiff = TIFFOpen(szFileName, "r");//打开Tiff文件,得到指针,以后所有的操作都通过指针进行 int nTotalFrame = TIFFNumberOfDirectories(tiff); //原创 2012-08-09 11:11:24 · 25188 阅读 · 13 评论 -
VC/MFC中计算程序运行时间
在我们实际的编程工作中,经常要测量程序的运行时间,比如衡量算法的运行时间等等。在这里我收集了网上集中测量程序运行时间的方法。通过网上查阅资料,找到以下几种VC中求取程序运行时间的方法:方法一 利用GetTickCount函数(ms)代码:CString str; longt1=GetTickCount();//程序段开始前取得系统运行时间(ms)转载 2012-08-19 20:30:28 · 13909 阅读 · 1 评论 -
VC鼠标拖动动态画矩形框
要实现的功能实际上很简单,一般人都用到见惯不惯了,但是实现起来还是有点意思的。问题详细描述:(三步)单击鼠标左键时记录下单击点;鼠标拖动时,显示的矩形框能够动态的跟随显示;释放鼠标左键时擦出矩形框。这样分析其实问题就简单一些了,只需要对鼠标的三个事件进行相应就可以了。代码主要在三处地方修改了:第一处:VIEW类中设置私有变量(VIEW类.h文件中)private:转载 2012-06-23 15:48:18 · 20530 阅读 · 13 评论 -
VC++图形平移功能的实现
在GIS开发中,我们会经常碰到地图平移的操作,那么这个操作在具体的编程实践中怎么去实现? 其实地图平移只需要改变两个绘图参数就可以了,也就是左下角原点的坐标,地图的比例尺不变。具体的代码如下: CDC *pDC = GetDC(); CGISServerDoc* pDoc = GetDocument(); OGRPoint pt1 = pDoc->m_mapWnd.Sc原创 2012-06-24 15:43:44 · 6574 阅读 · 15 评论 -
GDI绘制叶形线和蝴蝶结
具有一定规律的曲线可以用数学表达式来模拟,那么在计算机世界中这些图形是怎么生成的,下面来看一下一些简单图形的生成方法,蝴蝶线和星形线。蝴蝶线、代码如下:void OnDrawRose(CDC* pDc){ int d,k,x1,x2,y1,y2; float pi,a,e; CPen pen; pen.CreatePen(PS_SOLID,1,RGB(0xff,0,0)原创 2012-11-13 21:40:34 · 3172 阅读 · 4 评论 -
GIS属性数据高效显示
对于GIS软件来说,属性数据的显示是一个比较重要的问题,在基于VC++的GIS底层开发中,一般用ClistCtrl或者DBGrid来显示属性数据。然而这些控件显示效率比较低或者效率高的话比较难操作。通过最近的探索,找到了一个比较好的网格控件来显示属性数据。CGridCtrl这个控件是一个源代码公开的控件,你可以自己修改源代码。控件的特点:●使用鼠标可以进行单元格的选择,还可以辅助c原创 2013-01-03 16:59:45 · 7094 阅读 · 1 评论 -
VC橡皮筋绘制技术的实现
在我们在使用微软的绘图程序时。当要画一条直线,先用鼠标确定起始位置,然后鼠标在屏幕上来回移动时,我们会发现,这条直线就像橡皮筋一样,随着鼠标在屏幕中的位置,长短和终点都随之变化。我们在编制自己的程序时,有时也需实现类似的功能,本文将通过简单的编程实例,并说明实现原理。一。实现原理: 利用了WINDOWS绘图模式中的“异或”的绘图特性。即在屏幕上用异或的模式画图形,然后再用异或转载 2013-01-23 15:49:13 · 6634 阅读 · 2 评论 -
LPTSTR转换为std::string方法探索
在VC编程中,经常会遇到字符串之间的转换,本文就LPTSTR转换为std::string进行探讨。在unicode环境下,LPTSTR表示宽字符有两种方法1、LPTSTR sddd = _T("ddddd"); char *ansiRemoteHost = new char[wcslen(sddd)*2+1]; memset(ansiRemoteHost,0,wcsle原创 2013-03-31 13:14:47 · 8877 阅读 · 0 评论 -
char*转LPCWSTR解决方案
在Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换。下面就列出几种比较常用的转换方法。1、通过MultiByteToWideChar函数转换 MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下:int MultiByteToWideChar( UINT CodePage,原创 2013-04-05 16:18:26 · 101162 阅读 · 5 评论 -
C++ 虚函数表解析
原文作者:陈皓 原文地址:C++虚函数表解析C++ 虚函数表解析 陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,转载 2013-04-06 19:12:35 · 1596 阅读 · 0 评论 -
VC++工具栏显示真彩色位图资源
问题: 论坛中有很多人提出:基于Windows的程序如资源管理器(Explorer.exe),IE等都能显示出漂亮的工具栏图像和图标。但是,用MFC开发的应用程序一般都只能显示16色的工具栏图像和列表视图(如CListView)图像,而无法显示在资源中创建的256色图标和位图。这是为什么?解答:工具栏和列表视图都是把自己的图像存储在图像列表中。这个图像列表实际上就是一个图像清单。转载 2012-08-04 22:00:15 · 6606 阅读 · 0 评论