C/C++


  1. C99显示函数名的宏__func__

    前言 在调试代码或者写一些通用的测试函数的时候,有时候想如果能够用字符串的方式显示出正在调用的函数名该有多好。其实在C99标准中就已经有了这样的宏__func__,只是平常不怎么被提起。那么这个宏怎么用呢? 示例 程序: #include<iostream> using namespace std; void fun(){ cout<<__func__<<endl; } int main(){ fun(); } 结果: fun…

    C/C++阅读全文

  2. 一个实用的代码查重程序sim工具

    sim工具是在搭建hustoj的过程中发现的一个小玩意。毕竟作为一个OJ,hust的人肯定也考虑到了网络比赛中代码复制粘贴的现象。所以一个代码判重的工具肯定是必不可少的。然而这个工具在网站的前后台中并没有体现,而是作为一个附带的工具一起打包下来的。而且事实上他打包的版本有点老了,所以我去了作者的博客上找了最新的版本--Dick grune。 额,是的没错,他就叫 Dick~~,大概看了下博客,真是个挺厉害的人,写了不少的书,都是关于编译方面的东西,好像还搞了LaTeX的解释器啥的。。。我现在要…

    Tools, C/C++, Sim阅读全文

  3. Qt实现FTP的上传和下载

    本来想简单抄抄书,随便手写个Ftp客户端的,结果发现教材上的是基于Qt4的QFtp类库,而在Qt5中取消了这一个类库(同时也取消了QHttp等的类),取而代之的是QNetworkAccessManager 这个类,把这些杂货全都揽下来了,据说是因为之前的两个类有重复而且效率有问题balabala。于是就百度了一下,发现百度上要么讲的不全,要么就是要去下一个由热心网民重新封装的QFtp类。显然我并不喜欢无脑复制粘贴,想好好看下Qt官方提供的东西的用法,深入的理解下Qt网络编程,于是就果断自行goo…

    Qt, C/C++阅读全文

  4. 基于stdarg.h的可变参数函数的用法

    在开始学习C语言的函数的时候,我们就知道函数的参数个数应该是在函数声明的时候就指定的,这一点我们没有任何疑问。但是不知道大家有没有注意到我们的printf()函数,他的函数参数理论上并不是确定的,而是随着匹配字符串中的格式控制符的个数控制的。其实当时也没有注意到这一点,到是最近,偶然间看到了《嗨翻C语言》这本书,这里就详细讲解了这种可变参数函数的实现原理,今天考试间隙就顺带学习了一下,其实就是一种方法,知道了就晓得了,也是非常的简单。 头文件 这个用法需要引用一些宏,这些宏定义在C标准库“…

    C/C++阅读全文

  5. C语言助教用于批量改作业的脚本

    作为一名C语言助教,最恶心的事情莫过于改作业了,尤其是我们学校这种对输入输出都没有严格要求的题目,不能通过类似OJ的判题系统批量批改的,原则上是只能手动批改的。但是一直做着相同的简单的劳动真的很让人发疯,而作为一名程序员,对待这样的任务很自然就想到了编程。考虑了我现在略懂的语言,对于这种直接和文件达交道的事,我很自然的选择了使用shell脚本。虽然我对shell脚本其实是一窍不通的,然而正巧身边有一本关于这个的书,就花了一个晚上的时间倒腾了一下,有问题了就翻一下资料,差不多把这个小程序弄了个框架…

    Shell, C/C++, Linux阅读全文

  6. 左偏树简述

    简述 左偏树与二叉堆一样,是一种优先队列的实现。但是与二叉堆不一样,他不是一种完全二叉树,而是一种不平衡二叉树,这样做的目的是为了实现一个重要的性质--合并。通常的二叉堆并不能方便的实现两个堆之间的合并,而左偏树,却恰恰适合解决这样的问题。 实现功能 实现一个最小优先队列,是的插入、删除、合并等操作均在$O(logN)$的时间复杂度内完成。 实现思路 左偏树定义了一种节点叫“外节点”,即这个节点的左子树或者右子树为空。并且定义了一个性质叫“距离”,就是这个节点到他子孙中最近的外节点…

    Algorithm, C/C++, MathJax阅读全文

  7. Qt中基本的绘图方法

    Qt中实现绘图功能和其他的库差不多,主要靠Painter,Pen,Brush之类的东西进行描绘。这里主要牵涉到QPainter,QPen,QBrush三个类,用法也很简单。下面主要是实现一个全面显示各种图形的程序,定义了两个类,一个负责绘图区,一个负责用户交互,这里先介绍绘图区的类。 Painter.pro #------------------------------------------------- # # Project created by QtCreator 2015-11-…

    Qt, C/C++阅读全文

  8. Visual Studio 系列调试方法整理

    学编程不会调试,这简直就跟做买卖不会数钱一样好笑,有时候程序出了bug,思维受限的时候,肉眼是很难判断出错误的地方的,虽然调试不一定非得用Debug模式来进行,但是使用vs系列的Debug模式的确是个比较方便的好办法。 首先介绍一些快捷键: Ctrl + F5 键 这个就是直接运行程序,不会在任何断点处下来,所以实际上并不属于Debug模式的范畴,而是直接运行程序了。这样运行的程序结束后会自动pause一下,所以比较方便的能查看程序运行的结果,而不会出现所谓的“闪退”。 开启Debu…

    C/C++, Tools阅读全文

  9. Qt中实现QQ抽屉效果

    本节主要介绍利用QToolBox类实现抽屉效果。 所谓抽屉效果,就是类似QQ的好友分组的效果,每一个分组都可以独立打开和折叠。这样可以以一种动态直观的方式在有限大小的界面上扩展出更多的功能。 具体用法见代码: Dialog.pro #------------------------------------------------- # # Project created by QtCreator 2015-10-24T17:32:35 # #----------------------…

    Qt, C/C++阅读全文

  10. Qt中各种消息框的使用

    在程序运行时,经常需要提示用户一些信息,比如警告啊,提示啊,建议啊之类的东西。这些东西基本上是通过消息框与用户进行交互的,Qt中主要是用QMessageBox类来加以实现的。 消息框一般分为七种: 1. Question询问消息框:为正常的操作提供一个简单的询问 2. Information信息消息框:为正常操作提供一个提示 3. Warning提示消息框:提醒用户发生了一个错误 4. Critical警告消息框:警告用户发生了一个严重错误 5. About关于消息框:自定义的关于…

    Qt, C/C++阅读全文