羌塘之风

重剑无锋,大巧不工。

导航

2013年11月12日 #

STL笔记:iterator

摘要: 在此总结下STL中iterator的实现: 首先,STL中存在三类神器:容器,算法,迭代器。他们三者的关系是:算法通过迭代器操纵容器。这样有一个好处是算法的设计无需考虑具体的容器,只操纵迭代器就可以了。当我们需要自己设计一个算法,兼容STL中的容器,那么只需要在满足迭代器的种种规范下设计算法即可。反过来,当我们需要自己设计一个容器,并且这个容器兼容STL中的算法,这个容器只需要提供相应的满足种种规范的迭代器即可。 所以迭代器的作用不言而喻:它是连接容器和算法的粘合剂。 而话又说回来,既然容器中提供了迭代器,那么还需要单独设计出一个干嘛?规范。无论是STL中已存在的容器和算法,或者是设... 阅读全文

posted @ 2013-11-12 19:51 羌塘之风 阅读(204) 评论(0) 推荐(0)

2013年11月7日 #

STL笔记:traits编程

摘要: 最近在看stl源码剖析,其中遇到了traits技术,感觉很有意思,在此记录下来。 故事的开端是这样的,想实现一个函数,想让这个函数对其参数的类型做出相应的行为,而不是参数具体的值。比如,如果我想实现一个函数func(t),当参数t属于内置类型时,打印“I'm here”,当参数t属于自己已经定义或未来可能定义的类类型的类型时,打印“I'm not here”,该怎么实现它呢?也许函数重载是一种方法,不过对于每个类型都重载一次未免工作量有些偏大,而且当定义新的class时,还得为这个新添加的class再次定义一次func。 利用模板是一种不错的选择。不过对于模板来说,如何去实现不 阅读全文

posted @ 2013-11-07 17:40 羌塘之风 阅读(183) 评论(0) 推荐(0)

2013年11月4日 #

gvim安装随笔

摘要: 准备工作。在正式安装gvim前,首先需要安装一系列程序才可以,否则只能安装出来vim:1. sudo apt-get install build-essential2. sudo apt-get install ncurses-dev3. sudo apt-get install libgtk2.0-dev4. sudo apt-get build-dep vim-gtkwww.vim.org上下载最新的vim,并解压缩:tar xjvf vim-7.2.tar.bz2 。然后cd vim72。然后编译 ./configure --prefix=/usr/home/hitzzc --enabl 阅读全文

posted @ 2013-11-04 19:57 羌塘之风 阅读(230) 评论(0) 推荐(0)

2013年11月1日 #

智能指针

摘要: 今天总结下C++中智能指针的学习。 在类的数据成员中,如果存在指针成员,如果用此类定义两个对象A,B,当将A复制给B时,A中的指针成员的值将复制给B中对应的指针成员。这时出现一个问题就是,如果A中的指针成员指向的是堆中的变量,则在复制的过程中,将堆中的那个变量的地址复制给了B中相应的指针变量,如果此时对A中的指针成员进行delete释放堆中的变量,由于B并不知道堆中的变量已经被释放,所以此时B中的指针成员成为了悬浮指针,这时如果再对B中的指针变量进行delete,将引发灾难。。。。 好吧,语言表述能力太差,用个代码描述这个过程:#includeusing namespace std;c... 阅读全文

posted @ 2013-11-01 22:26 羌塘之风 阅读(185) 评论(0) 推荐(0)

重剑无锋,大巧不工

摘要: 一直就想通过写blog的方式,督促自己学习,进步,不过一直没有实施。希望从今天开始,改变!重剑无锋,大巧不工. 阅读全文

posted @ 2013-11-01 22:02 羌塘之风 阅读(160) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示