STL(standard template library)中的向量和表

C++的标准模板库(STL)即是公共数据结构的实现。表ADT就是在STL中实现的数据结构之一。这些数据结构称为集合或容器。
表ADT的两个实现:vector和list。vector给出表ADT的可增长的数组实现。优点是在常量时间内可索引,缺点是插入或删除操作代价高。list提供表ADT的双向链表实现。优点是,若变化位置已知,则插入和删除代价很小,缺点是不好索引。
对所有STL容器都适用的三个方法:
这里写图片描述

vector和list(此处指双向链表)都支持在常量时间内访问表的前端的项。
这里写图片描述

仅对list有效的方法:
这里写图片描述

vector特有的方法:前两个可以高效索引,后两个允许观察和改变其内部容量。
这里写图片描述

迭代器

在表的中部进行插入和删除操作,需要位置标记。在STL中,通过内置类型iterator来给出位置。例如:
list<string> ,类型 list<string>::iterator 给出位置;
vector<int> ,类型 vectoy<int>::iterator 给出位置;
以此类推。

关于迭代器的三个问题:

1.获得迭代器

这里写图片描述

2.迭代器的方法

迭代器最常见的操作
这里写图片描述

3.哪些表ADT需要迭代器作为形参(需要迭代器的容器操作)

这里写图片描述

使用迭代器间隔地删除表中的项

函数模板,可以用于list和vector
这里写图片描述

const_iterator

STL中,每一个集合不仅包含嵌套的iterator类型,也包含嵌套的const_iterator类型。iterator和const_iterator类型。iterator和const_iterator之间的主要区别是:const_iterator的operator*返回常量引用,这样const_iterator的*itr就不能出现在赋值语句的左边。
编译器会要求必须使用const_iterator类遍历常量集合。有两个版本的begin和两个版本的end来实现遍历集合:
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值