摘要:1.(P252) 迭代器的分类及其能力:input迭代器只能读取元素一次。如果复制input迭代器,并使原迭代器和新产生副本都向前读取,可能会遍历到不同的值。output迭代器类似。2.(P258) C++不允许修改任何基本类型(包括指针)的暂时值,但对于struct, class则允许。所以:也许会失败,这取决于vector的实作版本。3.(P259) C++标注库为迭代器提供的三个辅助函数①. advance() 前进(或后退)多个元素注:对于Bidirectional迭代器或Random Access迭代器,n可以为负值,表示后退②. distance() 处理迭代器之间的距离③. it
阅读全文
摘要: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
阅读全文