Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > stl学习笔记1(入门速览与迭代器)
【标  题】:stl学习笔记1(入门速览与迭代器)
【关键字】:stl
【来  源】:http://blog.csdn.net/wqf363/archive/2006/12/10/1437582.aspx

stl学习笔记1(入门速览与迭代器)

Your Ad Here

 入门: stl速览

  STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。

1.1 头文件和名字空间
为了避免和其他头文件冲突, STL的头文件不再使用常规的.h扩展。
1. STL头文件和容器类
#include
Container Class
<deque>
deque
<list>
list
<map>
map, multimap
<queue>
queue, priority_queue
<set>
set, multiset
<stack>
stack
<vector>
vector, vector<bool>
 
为了使用STL,可以将下面的指示符插入到你的源代码文件中,典型地是在所有的#include指示符的后面:using namespace std;
1.2 六大组件
1)    迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象。
2) 容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。
3) 算法是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。
            以下是六大组件列表说明:

组件英文名
组件中文名
含义
备注
iterators
迭代器
泛型指针
 
containers
容器
就是数据结构,用来存放元素
 
algorithms
算法
就是算法
 
function object
函数对象
一种行为类似函数的东西
 
allocators
配置器
用来分配内存空间
这一特性很多编译器不是很支持,建议使用默认值
adapters
适配器
用来修饰其它组件
可参考设计模式中的adapter

 
2 组件一:迭代器描述
2.1 迭代器的类型
对于STL数据结构和算法,你可以使用五种迭代器。下面简要说明了这五种类型:
·        Input iterators提供对数据的只读访问。
·        Output iterators提供对数据的只写访问
·        Forward iterators提供读写操作,并能向前推进迭代器。
·        Bidirectional iterators提供读写操作,并能向前和向后操作。
·        Random access iterators提供读写操作,并能在数据中随机移动。
尽管各种不同的STL实现细节方面有所不同,还是可以将上面的迭代器想象为一种类继承关系。从这个意义上说,下面的迭代器继承自上面的迭代器。由于这种继承关系,你可以将一个Forward迭代器作为一个output或input迭代器使用。
下面是各种iterator类型之间的关系列图:
input iterators        output iterators
            \             /
             forward iterators
                   |
             bidirectional iterators
                        |
             random access iterators
指针迭代器
正如下面的小程序显示的,一个指针也是一种迭代器。该程序同样显示了STL的一个主要特性——它不只是能够用于它自己的类类型,而且也能用于任何C或C++类型。
容器迭代器
尽管C++指针也是迭代器,但用的更多的是容器迭代器。容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象。两个典型的容器类方法是begin()和end()。它们在大多数容器中表示整个容器范围。其他一些容器还使用rbegin()和rend()方法提供反向迭代器,以按反向顺序指定对象范围。
常量迭代器
和指针一样,你可以给一个迭代器赋值。
wxWidgets-2.6.1编译和在VC中的配置:【上一篇】
srandom ( ) 和 random ( ) 【C语言库函数源代码】:【下一篇】
【相关文章】
  • JSTL资料收集
  • stl实现序列化
  • 在linux下一个有趣的STL文件IO问题
  • C++ STL(标准模板库) 学习资源列表
  • 理解STL中的函数子,函数子类,和其用法
  • std::string及iostream实现性能比较:stlport VS GNU libstdc++
  • 使用C++(STL)+Cgicc+OTL+prototype开发简易CGI留言本(2)
  • stl 容器(1)
  • stl 容器(2)
  • Castle ActiveRecord中ntext类型的映射
  • 【随机文章】
  • JSP/JavaBean数据库操作,分页显示开发包
  • 传奇 46区天煞物价报价
  • 向 Spring.Net 提交的建议被采纳并实现了
  • 小叮当也战江湖—VB实例七日谈(三)
  • a small game-21 points
  • solaris 第一章 硬件维护
  • @ 指令参考之一 - @CODEPAGE
  • 第01课 了解单片机的原理控制一个LED灯的亮和灭-----51单片机C语言试验教程
  • AS基础精典教程 第十二章 第四个版本的选择题
  • 无聊的笔试准备!!! (无聊透顶 ---------------------)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.