C++

在C++98/03的泛型编程中,模板实例化有个很恼人的地方。那就是连续的两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束。 让我们来看看下面这个例子: template struct Foo { typedef T type; }; template...

发布 0 条评论

拖了又拖,终于痛下决心写这篇文了……因为自己太懒,博客里的内容一直捉襟见肘,实在是说不过去啊。 闲话少叙,还是赶快进入正题吧。 话说在C++里一直有一个比较头疼的问题,那就是在函数调用函数的时候,如何正确的传递参数。 考虑下...

发布 0 条评论

最近在考虑写一个可以跨平台的通用字符串类,首先需要搞定的就是编码转换问题。 vs默认保存代码文件,使用的是本地code(中文即GBK,日文即Shift-JIS),也可以使用带BOM的UTF-8。 gcc则是UTF-8,有无BOM均可(源代码的字符集可以由参...

发布 0 条评论

组合模式是一个很有意思的模式。 它的特征在于自身和自身的组合 —— 我们可以先想象有这么一个对象,它是一个集合(可以是数组或链表或其他的容器),它内部的子对象和它是同一个类型的对象。 恩,想象到这里就够了,这就是一个组合模...

发布 0 条评论

现在我们有这样一坨代码: std::vector arr; // ... for(std::vector::iterator iter = arr.begin(); iter != arr.end(); ++iter) { // ... } 其中难看而又不好维护的std::vector::iterator,由于我们无法自动获知arr.begin()的类...

发布 1 条评论

原子操作一直是多线程编程中的重要杀器之一。Win32里我们有Interlocked系列API,其他平台下也有各自的原子操作接口。如果想要让我们的程序能够拥有跨平台且统一的多线程调度方案,那么就必须得把不同的操作接口统一(C++11中已经有了...

发布 0 条评论

前两年我发过一文:Win32下的C++高斯模糊算法实例,里面给出了一个高斯模糊的实现,并写了粗略的简介。 不过当时内容讲得非常简单,而且附带的例子算法是有缺陷的: 一是对图片的边角采用“跳过”的方式处理,导致模糊后的图片有黑边;...

发布 4 条评论

当我们面临两个相互独立的变化作用到同一个逻辑对象上时,往往会导致设计的尴尬局面。 比如说,当我们要抽象“服装”这个概念,我们会得到如“衣服”、“裤子”、“帽子”的样式分类方式,同样也会得到如“绿色”、“红色”、“彩色”的颜色分类方式...

发布 0 条评论