C++还提供了其他一些类库,这些类库更加专用. 例如,头文件complex为复数提供了类模板complex,包含用于float.long和long double的具体化. 这个类提供了标准的复数运算以及能够处理复数的标准函数. C++11新增的头文件random提供了更多的随机数功能. 头文件valarray提供的模板类valarray,这个类模板被设计成用于表示数值数组, 支持各种数值数组操作.例如将两个数组的内容相加,对数组的每个元素应用数学函数以及对数组进行线性代数运算. ========…
标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若干值. STL容器是同质的,即存储的值的类型相同. 算法是完成特定任务的处方(例如对数组进行排序或在链表中查找特定的值). 迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,属于广义指针. 函数对象是类似于函数的对象,可以是类对象或函数指针(包括函数名,因为函数名被用作指针). STL使得能够…
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…
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…
cb23a_c++_标准模板库STL_set_multiset_关联容器 set(集)数据不能重复.multiset(多集)可以重复.操作数据速度快,数据自动排序.红黑树(数据结构)红黑树-二叉树基本操作insert: 插入时比vector稍慢count和finderase: 注意:不能通过find进行修改(因为它会自动排序,位置就不确定),顺序容器vector可以修改.set只能查找,不能修改.vector可以. set可以先删除数据,再插入数据.welcome to disscusstxwt…
参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进行过学习和总结,但并没有一个宏观上的把握,现在通过上一篇和这一篇博文,将对C++模板以及基于C++模板的STL关联起来,形成一个总体的把握,对于掌握C++中模板(template)这一强有力的工具会十分有帮助.本文的主要内容有: (1) STL容器: (2) STL迭代器: (3) STL算法: (4) ST…
二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写模板?因为STL里已经为我们写好了.我们的任务是:学会使用它们. STL(Standard Template Library),即标准模板库,由惠普实验室(HP Labs)开发, 是一个具有工业强度的.高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是A…
1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的分离,非面向对象本质.访问对象是通过象指针一样的迭代器实现的: 容器是象链表,矢量之类的数据结构,并按模板方式提供: 算法是函数模板,用于操作容器中的数据.由于STL以模板为基础,所以能用于任何数据类型和结构. 容器可以分为三种主要类型:序列容器.关联容器.容器适配器. 每种STL容器都具有相关联的…