分页:
上一页 1 2 3 4 5 6 [7] 8 9 下一页
void userCode(LinkedList& a)
{
for (LinkedListIterator p = a.begin(); p != a.end(); ++p)
std::cout << *p << ’\n’;
}
实现这个接口,LinkedList需要一个begin()方法和end()方法。它们返回一个“LinkedListIterator”对象。该“LinkedListIterator”需要一个前进的方法,++p ;访问当前元素的方法,*p;和一个比较算符,p != a.end()。
如下的代码,关键在于 LinkedList 类没有任何让用户访问 Node 的方法。Node 作为实现技术被完全地隐藏了。LinkedList内部可能用双重链表取代,甚至是一个数组,区别仅仅在于一些诸如
prepend(elem) 和 append(elem)方法的性能上。
#include // Poor man’s exception handling
class LinkedListIterator;
class LinkedList;
class Node { // No public members; this is a "private class"
friend LinkedListIterator; // 友员类
friend LinkedList;
Node* next_;
int elem_;
};
class LinkedListIterator {
public:
bool operator== (LinkedListIterator i) const;
bool operator!= (LinkedListIterator i) const;
void operator++ (); // Go to the next element
int& operator* (); // Access the current element
private:
LinkedListIterator(Node* p);
Node* p_;
friend LinkedList; // so LinkedList can construct a LinkedListIterator
分页:
上一页 1 2 3 4 5 6 [7] 8 9 下一页