OOPC7-2.pptVIP

  • 4
  • 0
  • 约6.37千字
  • 约 45页
  • 2016-08-22 发布于河南
  • 举报
OOPC7-2

1994年, STL ,称为ANSI/ISO C++ 标准的一部分。 特定的算法不依赖于特定的数据结构,如sort或search算法。 STL是类提供者的集合。 容器用来存储不同的数据结构。 迭代器访问容器中的元素。 算法表现能作用于容器上的操作。 STL存在于std名称空间中。 7.4 标准模板库(STL) 迭代器(Iterator) 容器(Containers) 算法(Generic Algorithms) 适配器(Adapter) 1.容器 容器是数据结构,是包含一组元素或元素集合的对象。容器类中包含一组元素或一个元素集合,作为通用元素收集器(generic holder)。 每一个容器类都有自己的访问或改变函数。 不同容器类有不同的迭代器。 容器的分类 C++提供的顺序类型容器有向量(vector)、链表(list)、双端队列(deque)。 关联容器主要包括集合(set)、多重集合(multiset)。 容器适配器主要指堆栈(stack)和队列(queue),见表7-1。 顺序容器 顺序容器将一组具有相同类型的元素以严格的线性形式组织起来。 向量容器(vector) vector();默认构造函数,它创建大小为零的向量容器。 vector(size_type n,const T value=T());初始化了大小为n的向量,第二个参数是每个对象的初始值,默认为T()构造的对象。 vector(const vector x);拷贝构造函数,用常数向量x来初始化此向量。 vector(const iterator first, const iterator last);从支持常数迭代器conat_iterator的容器中选取一部分来建立一个新的向量。 双端队列容器(deque) 双端队列容器是一种放松了访问权限的队列。 双端队列容器包含以下有4种形式的构造函数: deque();构造size()为0的双端队列容器。 deque(size-type n,const T v=T());初始化大小为n的双端队列,第二个参数是每个元素的初始值,默认为T()构造的对象。 deque (const deque x);拷贝构造函数,用双端队列x来初始化此双端队列容器。 deque(const iterator first,const iterator last);从另一个支持const iterator的容器中选取一部分来建立一个新的双端队列容器。 列表容器(list) 列表容器由双向链表构成,因此可以从链表的任意一端开始遍历。 与向量容器和双端队列容器一样,列表容器也有4种形式的构造函数: list();构造size()为0的列表容器。 list(size-type n,const T v=T());初始化一个大小为n的列表容器,把列表容器中的每个对象初始化为T()构造的对象。 list(const list x);按另一个列表容器x初始化列表。 list(const_iterator first,const iterator last);从另一个支持const iterator的容器中选取一部分来建立一个新的列表容器。   由于列表容器是顺序访问的容器,因此与向量容器不同,它没有capacity()、operator[]和at()这几个成员函数。除此之外,列表容器的访问函数与向量容器的访问函数相同,有begin()、end()、rbegin()rend()size()、max_size()、empty()、front()和back()等。 2.迭代器(Iterators) 理解迭代器对于理解STL框架并掌握STL的使用至关重要。简单地说,迭代器是面向对象版本的指针,STL算法利用迭代器对存储在容器中的元素序列进行遍历,迭代器提供了访问容器和序列中每个元素的方法。 声明迭代器的方法 using std::vectorchar::iterator; …… iterator p; std::vectorchar::iterator p; using namespace std; …… vectorchar::iterator p; 迭代器的类型: STL迭代器主要包括5种基本迭代器类别:输入、输出、前向、双向和随机访问迭代器,以及两种迭代器适配器(iterator adapters):逆向迭代器适配器和插入迭代器适配器。 迭代器相关的辅助函数   C++标准程序库为迭代器提供了三个辅助函数:advance()、distance()和iter_swap()。前两个函数提供了所有迭代器一些原本只有随机访问迭代器才有的访问能力,即前进或后退多个元素,以及处理迭代器之间的距离。第三个辅助函数允许用户交换两

文档评论(0)

1亿VIP精品文档

相关文档