迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,或者你需要对聚集有多种方式遍历时,你就应该考虑用迭代器模式,为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一接口...
分类:
其他好文 时间:
2014-07-11 22:25:04
阅读次数:
223
vector 遍历 ,begin,end,rbegin,rend,迭代器
分类:
其他好文 时间:
2014-07-11 21:58:35
阅读次数:
262
设计模式是什么?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
其本质就是继承与接口的组合应用。
为什么要用设计模?
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、提高工作效率。
设计模式的分类:
设计模式按目的可分为三种类型,共23种。
创建型模式:单例模式、...
分类:
编程语言 时间:
2014-07-11 00:45:52
阅读次数:
194
经验:避免返回handles(包括 references、指针、迭代器)指向对象内部。遵守这个条款可增加封装性,
帮助 const 成员函数的行为像个 const,并将发生“虚吊号码牌”(dangling handles)的可能性降至最低。
示例:
class Point{
public:
Point(int x, int y);
//...
void setX(int newVal);
void setY(int newVal);
//...
};
struct RectData{
Point...
分类:
编程语言 时间:
2014-07-10 22:56:05
阅读次数:
230
可变长的动态数组
必须包含头文件 #include
支持 随机访问迭代器
? 根据下标随机访问某个元素时间为常数
? 在尾部添加速度很快
? 在中间插入慢
所有STL算法 都能对vector操作...
分类:
其他好文 时间:
2014-07-10 21:45:52
阅读次数:
225
泛型算法
1. 算法如何工作
每个泛型算法的实现都独立于单独的容器。这些算法还是大而不全的,并且不依赖于容器存储的元素类型。为了知道算法如何工作,让我们深入了解find 操作。该操作的任务是在一个未排序的元素集合中查找特定的元素。从概念上看,find必须包含以下步骤:
1. 顺序检查每个元素。
2. 如果当前元素等于要查找的值,那么返回指向该元素的迭代器。
3. 否则,检查下一个元素,...
分类:
编程语言 时间:
2014-07-09 09:21:02
阅读次数:
213
STL算法之排序算法STL排序算法通常复杂度坏于线性,且必须要random-access Iterators。所以,forward_list, list, associative and unordered contains 不提供随机访问迭代器,这些容器不能用排序算法。但是,forward_lis...
分类:
其他好文 时间:
2014-07-08 22:34:18
阅读次数:
226
二叉树的三种遍历有递归版本,和迭代版本。本文介绍一种新的思路。
参考了 http://coolshell.cn/articles/9886.html
在许多应用中,我们还需要对遍历本身进行抽象。假如有一个求和的函数sum,我们希望它能应用于链表,数组,二叉树等等不同的数据结构。这时,我们可以抽象出迭代器(Iterator)的概念,通过迭代器把算法和数据结构解耦了,使得通用算法能应用于不同类...
分类:
其他好文 时间:
2014-07-08 15:41:35
阅读次数:
176
设计模式之迭代器模式(Iterator)摘录!...
分类:
其他好文 时间:
2014-07-08 14:51:48
阅读次数:
187
??①push_heap算法以下是push_heap算法的实现细节。该函数接收两个迭代器,用来表现一个heap底部容器(vector)的头尾,而且新元素已经插入究竟部的最尾端。template inline void push_heap(RandomAccessIterator first,Rand...
分类:
其他好文 时间:
2014-07-08 00:22:55
阅读次数:
307