基于SDL2实现俄罗斯方块
摘要:俄罗斯方块有多种旋转规则,我这里采用的是SRS。如果要改变旋转规则的话也很方便。 SRS: 内容后续补充。。 代码:https://github.com/CknightX/sdl_Tetris 素材来自网络
阅读全文
初探模板元编程
摘要:来看一个小例子: c++ include template struct Fibonacci { static const long val = Fibonacci::val + Fibonacci::val; }; template struct Fibonacci { static const
阅读全文
C++11 constexpr常量表达式
摘要:常量表达式函数 要求: 1. 函数体内只有单一的return返回语句 例如: 在c++11中是无法通过编译的。 但使用不会产生实际代码的语句是可以的,例如 2. 函数必须返回值 例如 无法通过编译的,因为无法获得常量的常量表达式是不被认可的。 3. 在使用前必须已有定义 4. return返回语句表
阅读全文
json11阅读
摘要:概要:json11是一个基于c++11的json解析库,dropbox出品。 使用 直接举自带单元测试test.cpp中的例子: cpp const Json obj = Json::object({ { "k1", "v1" }, { "k2", 42.0 }, { "k3", Json::arr
阅读全文
C++ 常见术语及解释
摘要:RAII(Resource Acquisition Is Initialization) 资源获取就是初始化 RTTI(Run time type information) 运行时类型信息 RVO(Return Value Optimization)、NRVO(Named Return Value
阅读全文
《Effective C++》笔记
摘要:01:视c++为一个语言联邦 为了理解C++,必须要认识其主要的次语言: C 说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。 Object Oreinted C++ 这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函
阅读全文
C++ is_same
摘要:is_same 如果T与U具有同一 限定的相同类型,则 为true,否则为false。 使用示例 首先定义了一个类模板 ,这个类模板有两个模板参数T和U。接着针对这个类模板T和U类型相同的情况进行偏特化。所以,当T和U为同一种类型时,将匹配到1,不同则匹配到0。两个版本唯一的不同是父类。 父类的定义
阅读全文
C语言标准io函数总结
摘要:转自:http://blog.csdn.net/sun_top/article/details/4235992本来是在vscode上用markdown排好版的,结果复制到这上面就变了形,无奈。 函数列表:clearerr() 清除错误 fclose() 关闭一个文件 feof() 如果到达文件尾(e
阅读全文
图形锁可绘制的图案总数计算
摘要:最近看到有人问手机图形解锁一共有多少种图案,便想着写个程序解决。 所谓图形锁,是指在一个九宫格中,不重复,不跳过(例如132,在2未被访问过的情况下不能直接1 3)的连接4个及以上的点为密码。 思路:最基本的DFS。用一个二维数组记录访问过的点,每次遍历数组寻找未访问的点作为终点,然后计算起点终点连
阅读全文
【C++】c++11多线程初探
摘要:相关头文件c++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。 <atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外
阅读全文
【C++】cout未刷新缓冲区仍会输出的问题
摘要:众所周知,cout是一个流对象,管理一个缓冲区。当使用 using namespace std; int main() { cout
阅读全文
【C++】预处理过程与语句总结
摘要:转载请保留: http://www.cnscn.org(CNS电脑与英语学习网) Author: cnscn 1)预处理 根据已放置在文件中的预处理指令来修改源文件的 内容 预处理器会分析\执行所有的预处理器指令,然后删除他们,得到一个仅包含C++语句的转换单元 预处理指令以 号开头 常用的预处理指
阅读全文
【C++】构造函数语意
摘要:构造函数的构造操作 编译器何时会为一个类合成默认构造函数? 答:当编译器需要的时候。 有以下四种情况: 1. 带有默认构造函数的类对象 以下代码为例: Bar类 内含 一个带有默认构造函数的foo对象,故编译器会为其合成默认构造函数。但该构造函数仅仅构造foo,而不会对a做任何操作。这体现了被合成的
阅读全文
求值器本质--eval&apply
摘要:最近跟着 "(How to Write a (Lisp) Interpreter (in Python))" 使用python实现了一个简易的scheme解释器。不得不说使用python这类动态语言实现不要太方便。 解释器的核心实际就是2个部分: eval 在环境里求值表达式 apply 将一个过程
阅读全文
【C++】Mandelbrot集绘制(生成ppm文件)
摘要:曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为“上帝的指纹”。 这个点集均出自公式:Zn+1=(Zn)^2+C。(此处Z、C均为复数)所有使得该公式无限迭代后的结果能保持有限数值的复数C的集合,构成曼德勃罗集。 曼德勃罗集: 看起来十分美丽和神秘,接下来就让我们用程序来绘制它。
阅读全文
【C++】operator new/new operator/placement new之间的区别
摘要:new operator new operator即是c++中的关键字new。比如A = new A; 中的new就是new operator。 它执行了三个步骤: 1. 分配内存空间 事实上,分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator n
阅读全文
【C++】SGI-STL空间配置器
摘要:第一级配置器是对C的内存分配函数malloc,free,realloc的简单封装,用来分配大于128bytes的区块。 第二级配置器管理16个free-lists链表,各自管理8-128bytes的小额区块。 链表节点结构如下: 当一个区块未被使用时,其前端sizeof(obj)的空间用于存放uni
阅读全文
【C++】正则表达式引擎学习心得
摘要:最近参照一些资料实现了一个非常简易的正则表达式引擎,支持基本的正则语法 | + ()等。 实现思路是最基本的:正则式 AST NFA DFA。 以下是具体步骤: 一. 正则式 AST: 这一步没什么好说的,因为正则表达式的语法较为简单,使用编译原理中的递归下降的方法, 可以很容易的构造出一个语法分析
阅读全文
【C++】子类访问父类typedef的问题
摘要:这段代码运行没有问题,子类继承了父类定义的类型pointer。 但当普通类变成模板类时: 当定义一个B对象时,上述代码在g++中会报错:pointer does not name a type。 查阅资料后了解到: N4567 § 14.6.2[temp.dep]p3 In the definitio
阅读全文
【C++】STL算法之remove_if
摘要:之前写过这样一段代码: 我当时的想法很简单,iter保存的是不满足lambda表达式的元素的尾,即 所有满足元素的首 。接着对这些我想要删除的元素进行destroy操作,最后从vector中删除。 看上去好像没什么问题,可是程序老是出错,调试后发现问题就出现在我对粗体字部分的想当然。 且看remov
阅读全文