摘要:1.(P252) 迭代器的分类及其能力:input迭代器只能读取元素一次。如果复制input迭代器,并使原迭代器和新产生副本都向前读取,可能会遍历到不同的值。output迭代器类似。2.(P258) C++不允许修改任何基本类型(包括指针)的暂时值,但对于struct, class则允许。所以:也许会失败,这取决于vector的实作版本。3.(P259) C++标注库为迭代器提供的三个辅助函数①. advance() 前进(或后退)多个元素注:对于Bidirectional迭代器或Random Access迭代器,n可以为负值,表示后退②. distance() 处理迭代器之间的距离③. it
阅读全文
摘要:前段时间在用devcpp时,发现他有个插入快捷键,可以自定义注释模板,直接插入即可,感觉很方便。但是我偏向于VS,所以就在CSDN上提问了,很高兴的找到了我需要的答案---自定义宏注释模板。这里和大家分享下(虽然网上讲的很多了。。。)程序注释的重要性毋庸置疑,一个大型的项目通常情况下都是几个软件工程师合作出来的成果,假如该项目中的代码注释不全,那会给将来的维护者带来无穷无尽的隐患。通用的办法是给自己工程里面的函数添加注释——使用宏。1.打开Visual Studio 2008(2005一样适用)开发工具,单击“工具→宏→新建宏项目”,然后按照步骤建立注释宏,添加如下代码并保存。2.打开 菜单
阅读全文
摘要:1.(P145) 容器类别的共同操作函数(只列了个别几个):c.max_size()Returns the maximum number of elements possiblec1.swap(c2)/swap(c1, c2)Swaps the data of c1and c2c.begin() / c.end()Returns an iterator for the first element/the position after the last elementc.rbegin()Returns a reverse iterator for the first element of a r
阅读全文
摘要:这一章主要是大概的介绍一下容器,迭代器,算法,仿函数等,为6,7,8,9章的概括。1.(P74) STL的基本概念就是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义。迭代器在两者之间充当粘合剂。任何算法都可以和任何容器交互运作。 2.(P75) 容器(Containers)容器类别用来管理一组元素。总的来说,容器分为两大类:①.序列式容器(Sequence containers),是可序(ordered)群集。包括vector, queue, list。②.关联式容器(Associative containers),是已序(sorted)群集。包括set, multiset
阅读全文
摘要:1.(P33) Pairs(对组)的定义class pair可以将两个值视为一个单元。map和multimap就是通过pair来管理键值/实值(key/value)的。在pair的定义中:[代码]可以看到在copy构造函数时,使用了template,这是对于需要隐式转换的。如果是相同类型,则不是调用此构造函数,而是调用系统合成的copy构造函数。对于上面代码实现的方法,在学习笔记1(http://www.wutianqi.com/?p=2025)中第二点讲到过。2.(P36) 生成Pair的便捷函数make_pair()namespace std { // create value pair
阅读全文
摘要:————————— 第二章 —————————1.(P11) C++规定:除了以typename修饰外,template内的任何标志符号都被视为一个值(value)而非一个型别。 eg. [代码] 这里typename指出SubType是class T中定义的一个型别,因此ptr是一个指向T::SubType的指针,否则SubType会被当作一个static成员,于是: T::SubType *ptr被认为是SubType与ptr的乘积。 2.(P12) template class 的 member template问题: 下面例子,即使两个型别之间可以自动转换,如int和do
阅读全文
摘要:接上一篇:最短路径算法—Bellman-Ford(贝尔曼-福特)算法分析与实现(C/C++) Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含
阅读全文
摘要:相关文章:1.Dijkstra算法:http://www.wutianqi.com/?p=18902.Floyd算法:http://www.wutianqi.com/?p=1903Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bellman, 动态规划的提出者)和小莱斯特•福特(Lester Ford)发明。Bellman-Ford算法的
阅读全文