随笔分类 - C++
摘要:所谓快速多通道积分图计算,其实就是 cumsum2D。我写了一个比较快的版本(比 VLFeat 的快),用 mex 编译一下就能用了。## 代码```cpp#include #include #include #include // compute integral imagetemplate vo...
阅读全文
摘要:C++中的智能指针shared_ptr的原理和应用
阅读全文
摘要:C++ 中的奇技淫巧大部分来源于模板技术,尤其是模版元编程技术(Template Meta-Programming, TMP)。TMP 通过将一部分计算任务放在编译时完成,不仅提高了程序的性能,还能让程序获得一些用常见语法结构无法实现的功能。在这里,我总结了几个利用 TMP 实现静态反射的例子,这些功能得益于模板的特化或模板实例化时的 SFINAE 行为。(代码默认包含 头)1. 类型判定#define MakeIsType(Tp) \template \class Is_##Tp { \public: \ enum {value = false}; \}; \template \...
阅读全文
摘要:一个能够在 Qt 中显示 OpenCV 图片控件源代码。
阅读全文
摘要:C++ 临时对象的生存周期是一个不小的坑,参考 C++ standard 第十二章第二节,总结其规则如下:基本原则:临时变量生存到其所在的完整表达式执行完毕之后(若作为函数参数,则以函数所在的完整表达式为准)。若其绑定到一个 const 引用上,则它将生存周期将被扩展到和该 const 引用一致,但是不会接着传递到另一个 const 引用。ctor-initializer 中的临时变量生存到构造函数结束。如果临时变量是以函数返回值的形式绑定到 const 引用上,则结果是 undefined 的。(这里和第二条不一样)
阅读全文
摘要:1.多维数组的数据类型:首先,数组是数组,指针是指针,数组名不是指针。不解?正常。不少C语言老师常常告诉学生:“数组名就是指向数组首元素的指针。”这句话只说对了一半,数组名的确可以当作指针使用,在不少的场合,数组名会被隐式地转换为指针(这种转换叫做退化,另一种退化发生在函数到函数指针的转换中)。但是数组不是指针,对于一个数组,int a[5],它的类型是int [5],能退化为int*类型,数组int b[5][4],它的类型是int [5][4],能退化为int (*)[4]类型,也就是说,它们能被隐式地转换为将它们看作一维数组时的首元素的指针。2.多维数组的指针既然数组有自己的数据类型(上
阅读全文
浙公网安备 33010602011771号