网站制作 客户刁难,深圳自助建站,网站主要内容包括什么,最新钓鱼网站源码1. 简述 STL即标准模板库 Standard Template Library#xff0c;包含了许多在计算机科学领域里所常用的基本数据结构和算法。STL具有高可重用性、高性能、高可移植性(跨平台)的优点。 两个特点#xff1a; 1.1 数据结构和算法分离。 1.2 它不是面向对象的#xff0c;是基于模…1. 简述 STL即标准模板库 Standard Template Library包含了许多在计算机科学领域里所常用的基本数据结构和算法。STL具有高可重用性、高性能、高可移植性(跨平台)的优点。 两个特点 1.1 数据结构和算法分离。 1.2 它不是面向对象的是基于模板(template)的。
2. 六大组件
组件描述例子容器(Container)各种数据结构类模板实现array、set、map、vector、list算法(Algorithm)各种常用的算法函数模板实现sort、find、copy、for_each迭代器(Iterator)提供访问容器中对象的方法iterator、const_iterator、reverse_iterator、const_reverse_iterator仿函数(Functor)使一个类的使用看上去象一个函数。class 或者class template通过重载operator()实现plusT、equal_toT适配器(Adaptor)用来修饰容器或者仿函数或迭代器接口分配器(Allocator)负责空间的配置与管理。是一个实现了动态空间配置、空间管理、空间释放的类模板 六大组件之间的关系容器通过分配器取得数据存储空间算法通过迭代器访问容器中的内容仿函数可以协助算法完成不同的策略的变化适配器可以修饰容器(使其表现出另一种行为)。
3. 两种容器 3.1 序列式容器(Sequence Containers) 每个元素都有固定位置如vector、deque、list。 3.2 关联式容器(Associated Containers) 元素位置取决于特定的排序准则和插入顺序无关如set、multiset、map、multimap
4. 算法 STL提供了大约100个实现算法的模版函数后续文章将详细介绍。 算法主要由三个头文件algorithmnumeric和functional组成。
头文件说明algorithm所有STL头文件中最大的一个由一大堆模版函数组成的。每个函数在很大程度上都是独立的其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。numeric体积很小只包括几个在序列上面进行简单数学运算的模板函数包括加法和乘法在序列上的一些操作。functional定义了一些模板类用以声明函数对象。
5. 迭代器 容器提供迭代器算法使用迭代器。Iterator通过运用聚合对象的模式使得可以在不知道对象 内部表示的情况下按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。 作用迭代器与算法可以互不干扰地发展最后又能一起无缝粘合地使用。
6. 仿函数 可以自定义仿函数也可以使用STL内建的仿函数(必须包含functional头文件)。 而STL内建的仿函数包括三种
分类算术类加plusT 减minusT 乘multipliesT 除dividesT 模取modulusT 否定negateT关系运算类等于equal_toT 不等于not_equal_toT 大于greaterT 大于等于greater_equalT 小于lessT 小于等于less_equalT逻辑运算逻辑与logical_andT 逻辑或logical_orT 逻辑否logical_noT
7. 适配器 适配器概念源于设计模式中的适配器模式将一个类的接口转化为另一个类的接口使原本不兼 容而不能合作的类可以一起工作。适配器就是接口模板。 7.1 容器适配器
类型描述声明stack FILO,底层是deque templateclass T, class Container std::dequeT class stackqueue FIFO,底层是deque templateclass T, class Container std::dequeT class queuepriority_queue 进队后自动排序默认大值先出底层是vector templateclass T, class Container std::vectorT, class Compare std::lesstypename Container::value_type class priority_queue 7.2 迭代器适配器
类型函数功能插入迭代器front_insert_iteratorfront_inserter在容器的头部插入元素底层调用push_front()back_insert_iteratorback_inserter在容器的尾部插入元素底层调用push_back()insert_iteratorinserter在容器指定位置插入元素底层调用insert()反向迭代器reverse_iterator将迭代器的方向进行逆转实现逆序遍历底层是双向迭代器流迭代器ostream_iterator输出流迭代器istream_iterator输入流迭代器移动迭代器move_iteratormake_move_iterator将元素从一个容器移动到另一个容器不作copy 7.3 仿函数适配器 仿函数适配器是一种特殊的函数对象它可以将一个仿函数转换为另一个仿函数或者将一 个普通函数指针转换为仿函数。
分类功能绑定 bindbind1st将参数绑定为函数对象的第一个参数bind2nd将参数绑定为函数对象的第二个参数否定 negatenot1对一元函数对象取反not2对二元函数对象取反组合 composecompose1、compose2将两个仿函数对象组合成一个新的仿函数对象其中一个仿函数对象的输出作为另一个仿函数对象的输入普通函数修饰ptr_fun将一个普通函数指针转换为一个仿函数对象成员函数修饰mem_fun存放对象指针mem_fun_ref存放对象
8. 分配器 STL的分配器是一个模板类。它提供了一种可移植的方式来管理内存可以根据需要自动调整 内存大小并提供了一些特殊的内存分配策略如内存池和堆栈分配等。STL分配器使用C的 new和delete操作符来分配和释放内存可以在不同的平台和编译器下使用。