随笔分类 -  C++

摘要:这篇文章主要讲simHash算法。这是一种LSH(Locality-Sensitive Hashing,局部敏感哈希)的简单实现。它是广泛用于数据去重的算法,可以用于相似网站、图片的检索。而且当两个样本差别并不大时,算法仍能起效。值得一提的是,该算法的时空复杂度不存在与维度有关的项,所以不会遭遇维度 阅读全文
posted @ 2016-02-17 19:53 Darksun2010 阅读(1741) 评论(0) 推荐(0)
摘要:使用Mingw64编译wxWidgets3.0.2,首先得下载wxMSW-Setup-3.0.2.exe(https://sourceforge.net/projects/wxwindows/files/3.0.2/wxMSW-Setup-3.0.2.exe,然后按照如下步骤编译(假设要编译一个Un 阅读全文
posted @ 2015-11-13 21:53 Darksun2010 阅读(830) 评论(0) 推荐(0)
摘要:有一个项目需要写csv文件以呈现数据。Github上有一个关于csv的轻量级读写库minicsv,于是下载之。但是编译example时出现了以下问题: In file included from example.cpp:1:0:minicsv.hpp: In function 'csv::ofstr 阅读全文
posted @ 2015-09-26 22:58 Darksun2010 阅读(392) 评论(0) 推荐(0)
摘要:画圆是计算机图形操作中一个非常重要的需求。普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数。而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯属浪费。下面介绍的Bresenham算法就是根据上文的原理设计。该算法原应用于直线的绘制,但由于圆的 阅读全文
posted @ 2015-08-09 23:21 Darksun2010 阅读(4040) 评论(0) 推荐(0)
摘要:FastBlur是Android标配的模糊算法,这也在当时引起了一股毛玻璃热潮。IOS7就采用了此算法(这有抄袭Android之嫌,因为Android1.5就在标库中加入了此函数)。算法效率很高,这也是能流畅运行在移动设备上的原因。但其只在Andorid上是标准库函数,移植版也只出现在Java上。本 阅读全文
posted @ 2015-07-27 23:03 Darksun2010 阅读(1213) 评论(0) 推荐(0)
摘要:把<string,T>(T为任意类型)关联起来,是很常见的需求。如笔者最近要做一个贝叶斯算法的垃圾邮件过滤器,就需要把每个单词与频率对应起来,做成一个表。而当单词很多时,对于每个单词做一遍O(N)的枚举,效率实在不尽人意。而下文讲到的一些关联容器或函数,都可以吧时间复杂度降至O(log2n)或更低。 阅读全文
posted @ 2015-07-07 08:03 Darksun2010 阅读(599) 评论(0) 推荐(0)
摘要:SDL库有很多的扩展,这很方便。但是每个扩展库都很臃肿,一般都会拖上额外的两三个开源库,更有甚者,扩展库的大小比SDL库本身还大得多。但有一个自带的、很有用的库很容易被大家忽视。它就是本文要讲的SDL_Test库。本库可以在不加载TTF库时在窗口上绘制字符串。 函数名叫SDLTest_DrawStr 阅读全文
posted @ 2015-04-26 18:59 Darksun2010 阅读(1585) 评论(0) 推荐(0)
摘要:素数的验证,可能会被作为所谓“循环练习”的题目。因为其算法实在太简单(不知道直接暴力循环能不能算一种算法)。经典的方法就是试除,用循环变量i从2开始到n-1,如果有取模为0的,就直接return false。到最后,还没有模出0,就return true。这个算法也可以优化n-1为sqrt(n)。原 阅读全文
posted @ 2015-04-03 20:24 Darksun2010 阅读(1717) 评论(0) 推荐(0)
摘要:libCURL是一个免费的、开源的强大客户端url传输库。支持的平台、协议甚广。平台上有Windows、Linux、FreeBSD;协议上有FTP、HTTP(S)、Telnet、DICT、File等。它是线程安全的,而且支持ipv6。同时,它还是线程安全的。 本文所讲述的内容,要基于Libcurl的 阅读全文
posted @ 2015-03-21 17:47 Darksun2010 阅读(2330) 评论(0) 推荐(0)
摘要:Eclipse+CDT 编辑C/C++程序出错误: 出现编译错误: **** Rebuild of configuration Debug for project example **** **** Internal Builder is used for build ****gcc -O0 -g3 阅读全文
posted @ 2015-03-15 22:00 Darksun2010 阅读(558) 评论(1) 推荐(0)
摘要:是的,按钮控件很常见,几乎在每一个Windows窗体内都能找到它的身影。SDL作为一套“一套开放源代码的跨平台多媒体开发库”,自然可以实现按钮。而按钮实现的重点,就是SDL的鼠标响应事件。 SDL的鼠标事件包括鼠标移动事件、按下鼠标键、松开鼠标键,和键盘一样,当你移动鼠标时发生鼠标移动事件,按下一个 阅读全文
posted @ 2015-03-07 21:48 Darksun2010 阅读(5431) 评论(0) 推荐(0)
摘要:很多人都在SDL_PollEvent和SDL_WaitEvent之间纠结。前者会带来更好的帧数表现,但是CPU占用极大,可以直接吃掉一个核心。后者则基本不占用CPU,但是帧数会受到影响。有没有办法使两者的优势结合呢?其实只要用轮询(SDL_PollEvent)并且配合一个帧速限制即可。 什么是帧速( 阅读全文
posted @ 2015-02-26 22:25 Darksun2010 阅读(3147) 评论(0) 推荐(0)
摘要:最近看见了一个迅雷地址,发现将其转换为普通链接的工具后,发现所谓专用地址地址就是原地址前加一个表示迅雷的前缀,后进行Base64编码。查阅Base64编码过程后,突发奇想:能否做一个Base16算法?再查Base16,发现已经有具体的算法,而且比较复杂。于是,打算做一个山寨的Base16算法,这个算 阅读全文
posted @ 2015-02-22 20:53 Darksun2010 阅读(917) 评论(1) 推荐(0)
摘要:有一种奇葩的类叫做空类。很显然,它没有任何作用,甚至对于学习C++都没有任何用处。但是,研究它的内存大小,我却从中发现了一些东西,那是平常我们注意不到的。 创建一个空类testA,输出sizeof(testA)的结果。既然是空类,内存大小应该是0才对。但是看一眼黑色控制台:1。1?为什么是1?百度给 阅读全文
posted @ 2015-02-20 12:27 Darksun2010 阅读(806) 评论(1) 推荐(0)
摘要:Union是个不被注意的关键字,意为联合体,这是个诡异的名字。若不是为了继承C语言,它也不会出现在C++中(虽说,union在C++中得到了扩充,完成了接近类的功能)。它的作用主要是节省内存空间,在嵌入式编程中有用。但在为当代微机设计的C++中,它也并非一无是处。请看看下面的代码: 你以为这代码能通 阅读全文
posted @ 2015-02-18 12:48 Darksun2010 阅读(3068) 评论(0) 推荐(0)
摘要:位运算算是从汇编语言一代传下来的老东西了,只有寥寥6个运算符。乍一看,你会说它没什么用处,那么你只对了一半:站在现在的高级编程角度来讲,确实用处不大;但是在涉及硬件底层的编程(如驱动程序,嵌入式开发)里,需要很强的操纵硬件能力,这时,就常常涉及到位运算。 位运算有6个运算符,它们分别是:&(与)、| 阅读全文
posted @ 2015-01-14 19:11 Darksun2010 阅读(636) 评论(1) 推荐(0)
摘要:作为一个OIer,装逼的本事是必不可少的。最近,为了展示自己CPP水平,为同学们做了一个Cena(当然,命令行界面,很迷你)。但是,却在文件对比这个最重要的环节卡住了。 我想了很多办法,首先想到的就是向C++的各种库里要文件对比函数,但是无论怎么翻,都没有。既然装逼,那么我就想到了一个看起来深奥的解 阅读全文
posted @ 2014-12-27 22:27 Darksun2010 阅读(2987) 评论(0) 推荐(0)
摘要:在计算机编程中,常常要产生一个随机数。而rand()与srand()函数配合就可以实现这个目的。 阅读全文
posted @ 2014-12-13 21:37 Darksun2010 阅读(3103) 评论(0) 推荐(0)