C++实现IE缓存迭代器

1、迭代器的定义:

     提供一种方法,使之能够依序访问某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。

2、迭代器的设计动机

  一个聚合对象,应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构。此外,针对不同的需要,可能要以不同的方式遍历这个容器。但即使可以预见到所需的那些遍历操作,你可能也不希望容器的接口中充斥着各种不同的遍历的操作。有时可能需要在同一个容器上同时进行多个遍历。

      迭代器模式的关键思想是将对列表的访问和遍历从容器对象中分离出来并放入一个迭代器(iterator)对象中。迭代器类定义了一个访问该容器的接口。迭代器对象负责跟踪当前的元素;即它知道哪些元素已经遍历过了。将遍历机制与列表对象分离使我们可以定义不同的迭代器来实现不同的遍历策略,而无需在容器接口中列举它们。

      一般一个迭代器类需要提供以下操作:

(1)    First():初始化迭代器,使当前元素指向列表的第一个元素。

(2)    Next():将当前元素指针向前推进一步,指向下一个元素。

(3)    CurrentItem():返回容器中的当前元素。

(4)    IsDone():检查是否已越过最后一个元素,也就是完成了本次遍历。

3、迭代器的适用性

(1)访问一个聚合对象的内容而无需暴露它的内部表示。

(2)支持对聚合对象的多种遍历

(3)为遍历不同的聚合结构提供一个统一的接口

4、空迭代器

     一个空迭代器(NullIterator)是一个退化的迭代器,它有助于处理边界条件,根据定义,空迭代器总是已经完成了遍历,即,它的IsDone操作总是返回true;

5、例子——IE缓存迭代器

        以下用C++实现一个迭代器类,用于遍历IE缓存空间。我们在访问网站或本地文件时,系统会把图片、动画、浏览记录等信息保存在Internet临时文件夹中,但这个文件夹是一个隐藏文件夹,不同于普通文件夹,Win32 API给用户提供了很多接口用于访问,修改这个文件夹里的内容。为了展示怎样怎样设计IE缓存迭代器,需要用到以下Win32 API。

5.1 需要用到的Win32 API

最低配置,头文件、库及动态链接库:

Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]

Header

Wininet.h

Library

Wininet.lib

DLL

Wininet.dll

(1)IE缓存的入口点

HANDLE FindFirstUrlCacheEntry(
 _In_     LPCTSTR lpszUrlSearchPattern,
 _Out_    LPINTERNET_CACHE_ENTRY_INFO lpFirstCacheEntryInfo,
 _Inout_  LPDWORD lpcbCacheEntryInfo
);

参数:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值