substr(位置,往后分割长度):分割字符串
Back():获取最后一个元素
size():获取列表的元素个数(具体的大小)
关联容器:
1.通过保存在数据项中的索引项,尽可能快速检索数据项
2.STL标准库中只包含有序关联容器set(集合)、multiset(混合集合)、map、multimap
- set, multiset:数据项就是索引项。 multiset允许出现重复的索引项。
- map, multimap:数据项是由索引项和其他某种类型的数据组成的一对数据。 multimap允许出现重复的索引项。
关联容器——map
增加和删除节点对迭代器的影响很小。对于迭代器来说,可以修改实值,而不能修改key
自动建立Key - value(键值对)的对应。key 和 value可以是任意你需要的类型。
根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
1--自动根据key排序(从小到大)
map的构造函数
- 使用map得包含map类所在的头文件
#include <map> - map对象是模板类,需要关键字和存储对象两个模板参数:
map<int, string> personnel;
//用int作为索引,存储string对象 - 如果元素是类对象,则开销比较大。可以用insert()来避免开销
map的成员函数2-2:
- 我们可以使用Find()和Count()方法来发现一个键是否存在。
- 查找map中是否包含某个关键字条目用find()方法,传入的参数是要查找的key
3.通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据
迭代器:
迭代器是面向对象版本的指针
指针可以指向内存中的一个地址
迭代器可以指向容器中的一个位置
STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。
函数对象
- 一个行为类似函数的对象,它可以没有参数,也可以带有若干参数,其功能是获取一个值,或者改变操作的状态。
- 任何普通的函数和任何重载了调用运算符operator()的类的对象都满足函数对象的特征
- STL中也定义了一些标准的函数对象,如果以功能划分,可以分为算术运算、关系运算、逻辑运算三大类。为了调用这些标准函数对象,需要包含头文件<functional>。
标准C++库中的算法
- 算法本身是一种函数模板
- 不可变序列算法(non-mutating algorithms)
- 不直接修改所操作的容器内容的算法
- 可变序列算法(mutating algorithms)
- 可以修改它们所操作的容器的元素。
- 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成
STL算法的头文件
- <algorithm>是所有STL头文件中最大的一个,它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。
- <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。
- <functional>中则定义了一些模板类,用以声明函数对象