C++标准程序库学习笔记(一)

第五章标准模板库

程序员角度:STL = 群集类别 + 算法(群集类别上的算法)

5.1

容器(群集)

容器(群集)

算法

迭代器

迭代器

 

5.2顺序容器:

Vector

Deque

List

关联容器:

Set/multiset

Map/Multimap

Vector:索引[]法,push_back(所有容器提供这个函数),size(所有容器提供这个函数)。易插入尾部元素。

Deque:和Vector类似。有push_front函数(Vector没有,因为Vector从前端插入费时)。易插入两端元素。

List:易插入中间元素。不提供[]索引访问。pop_front删除第一个元素但不返回。front函数返回第一个元素。

Strings:和Vector类似。

Array:没有sizeempty函数。

关联容器的区别主要在元素的类型和处理重复元素上。

Set:自动排序,不允许重复。

Multiset:自动排序,允许重复。

Map:元素都是实值/键值形成的对组。不允许重复。

Multimap:允许重复。

所有关联容器都有一个template参数,指明排序准则,默认是operator <。所有关联容器有二叉树实现。用insert函数插入,而不是用push_backpush_front

容器适配器:也是容器,StackQueuePriority queue

迭代器:面向对象的指针。有beginend函数,end函数返回结束点的迭代器,即最后一个位置的后面的迭代器。

Map允许使用[]索引,只不过是关联式数组。

迭代器分五种类型。STL定义的容器的迭代器都属于下面两种双向迭代器(listmap/multimapset/multiset);随机迭代器(包含双向迭代器的全部功能,Vectordequestring

5.4算法是搭配迭代器使用的全局函数。

min_elementmax_elementsortreverse(反转区间内的元素),find

5.4.1算法处理的是半开区间[pos1pos2,随机迭代器允许算术运算和关系运算。

5.4.2处理多个区间的元素,必须保证后面的区间够大。resizecopy

5.5适配器:特殊的迭代器。

Insert iteratorback_insertercontainerfront_insertercontainerinsertercontainerpos

Stream iterator:copy(istream_iterator<string>(cin),istream_iterator<string>(),back_inserter(coll));

*coll.end()*coll.rend()都没有定义。

5.6可变序列算法:不能用于关联容器。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值