标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若干值. STL容器是同质的,即存储的值的类型相同. 算法是完成特定任务的处方(例如对数组进行排序或在链表中查找特定的值). 迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,属于广义指针. 函数对象是类似于函数的对象,可以是类对象或函数指针(包括函数名,因为函数名被用作指针). STL使得能够…
C++还提供了其他一些类库,这些类库更加专用. 例如,头文件complex为复数提供了类模板complex,包含用于float.long和long double的具体化. 这个类提供了标准的复数运算以及能够处理复数的标准函数. C++11新增的头文件random提供了更多的随机数功能. 头文件valarray提供的模板类valarray,这个类模板被设计成用于表示数值数组, 支持各种数值数组操作.例如将两个数组的内容相加,对数组的每个元素应用数学函数以及对数组进行线性代数运算. ========…
STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_difference() transform() 它们的总体设计是相同的,都使用迭代器来标识要处理的数据区间和结果的放置位置. 有些函数还接受一个函数对象参数,并使用它来处理数据. 对于算法函数设计来说.有两个主要的通用部分: 1)都使用模板来提供泛型: 2)都使用迭代器来提供访问容器中数据的通用表示: 因为指针是…
有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念: 首先我们知道STL只是泛型编程的一种: 而面向对象的编程方式关注的是编程的数据方面: 而泛型编程关注的是算法: 但是,他们之间的一个重要共同点是:创建可重用的代码:但是理念却完全不一样. 接下来讨论泛型编程的理念: 这种编程方式旨在编写独立于数据类型的代码: 在C++中,完成通用程序的工具是模板. 模板使得能够按照泛型要求的方式定义函数或类: 而STL通过算法更进了一步. 模板让这一切成为了可能,但必须对元素进行仔细地设计. 为了了…
函数对象也叫做函数符(functor). 函数符是可以以函数方式和( )结合使用的任意对象. 包括函数名,指向函数的指针,重载了()运算符的类对象. 可以这样定义一个类: class Linear { private: double slope; double y0; public: Linear(double s1_=1, double y_ = 0):slope(s1_),y0(y_)  { } double operator() (double x) {return y0 + slope…
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的分离,非面向对象本质.访问对象是通过象指针一样的迭代器实现的: 容器是象链表,矢量之类的数据结构,并按模板方式提供: 算法是函数模板,用于操作…
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型. 定义queue对象的示例代码如下: queue<int> q1; queue<double> q2; queue的基本操作有: 入队,如例:q.push(x); 将x接到队列的末端. 出队,如例:…
标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic programming) 的思想: 模板机制,以及标准模板库STL 简单地说就是使用模板的程序设计法. 将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什么样的对象,则都不必重新实现数据结构,重新编写算法.标准模板库 (Standard…
一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http://acm.hpu.edu.cn/contest.php?cid=1020,密码c++08,共有5道题.将答题过程简单记录到实验过程中. 将答题结果写到实验结果中,并根据答题结果进行分析.反思,将其写到实验分析中,并写上实验时间.…
cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器map(映射,key不能重复,一对一对的,value_type(1, "one")),multimap(多映射key可以重复)红黑树(数据结构)map,multimap就是红黑树-二叉树基本操作insert:4 种方法count和finderase:3种方法注意:不能通过find进行修改. a.insert(map<int, string>::value_type(1, "o…