标准模板库

STL是C++标准程序库的核心,深刻影响了标准程序库的整体结构,STL内的所有组件都由模板(template)构成,其元素可以是任意类型。

STL组件:

1容器(Container) - 管理某类对象的集合

2迭代器(Iterator) - 在对象集合上进行遍历

3算法(Algorithm) - 处理集合内的元素

4容器适配器(container adaptor)

5函数对象(functor)

STL容器元素的条件

1必须能够通过拷贝构造函数进行复制

2必须可以通过赋值运算符完成赋值操作

3必须可以通过析构函数完称销毁动作

4序列式容器元素的默认构造函数必须可用

5某些动作必须定义operator ==,例如搜寻操作

6关联式容器必须定义出排序准则,默认情况是重载operator <

对于基本数据类型(int,long,char,double,…)而言,以上条件总是满足。

STL容器的共同能力是所有容器中存放的都是值而非引用。如果希望存放的不是副本,容器元素只能是指针。所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素。

vector模拟动态数组

vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public拷贝构造函数和重载的赋值操作符)必须包含的头文件#include<vector>vector支持随机存取vector的大小(size)和容量(capacity)size返回实际元素个数,capacity返回vector能容纳的元素最大数量。如果插入元素时,元素个数超过capacity,需要重新配置内部存储器。

关于vector模拟动态数组的操作:vector<T> c,产生空的vector。vector<T> c1(c2),产生同类型的c1,并将复制c2的所有元素。vector<T> c(n,e),产生一个大小为n的vector,每个元素都是e。vector<T> c(n),利用类型T的默认构造函数和拷贝构造函数生成一个大小为n的vector。vector<T> c(beg,end),产生一个vector,以区间[beg,end]为元素初值。~vector<T>(),销毁所有元素并释放内存。c.push_back(e),在尾部添加一个元素e的副本。

         Maps/MultimapsMap的元素是成对的键值/实值,内部的元素依据其值自动排序。Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素。内部由二叉树实现,便于查找。

         这里的算法很多还不会用,这也是挑着几个重要的操作写的。至于maps的了解还少,后面再联系理解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一份讲解全面的标准模板STL学习资料 标准模板STL主要由6大组件组成: (1)容器(Containers)。包括各种基本数据结构的类模板。 STL容器部分主要由头文件<vector>、<list>、<deque>、<set>、< map>、<stack>和<queue>组成。 (2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。 STL算法部分主要由头文件<algorithm>和<numeric>组成。 (3)迭代器(Iterators)。迭代器是面向对象版本的指针,如同指针可以指向内存中的一个地址,迭代器可以指向容器中的一个位置。 STL的每一个容器类模板中,都定义了一组对应的迭代器类,用以存取容器中的元素。这样,在STL中迭代器就将算法和容器联系起来了,通过迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 STL迭代器部分主要由头文件<utility>和<iterator>组成。 (4)函数对象(Function Objects)。一种行为类似于函数的class,实现技术上是一个改写了“call operator()”的class。 STL 提供 15 个预定义的 Function objects。头文件<functional>中定义了一些类模板,用以声明函数对象。 (5)适配器(Adaptors)。简单地说就是一种接口类,专门用来修改现有类的接口,提供一种新的接口;或调用现有的函数来实现所需要的功能。 主要包括3种适配器Container Adaptors、Iterator Adaptors与Function Adaptors。其中迭代器适配器的定义在头文件<iterator>中,函数适配器的定义在头文件<functional>中。 (6)内存配置器(Allocators)。为STL提供空间配置的系统。 头文件<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。容器使用allocator完成对内存的操作,allocator提供内存原语以对内存进行统一的存取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值