1.STL(Standard Template Library,标准模板库)是惠普实验室开发的,在被引入C++之前该技术就已经存在了很长的一段时间。
2.STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)
3.将容器中的数据通过迭代器送到算法中进行运算,得到我想要的结果
4.容器相当于类模板。
5.容器可分为:序列式容器(线性的),关系型容器(非线性的)。
6.序列式容器,是可序群集,其中每个元素均有固定位置,元素的位置取决于插入时机和地点,和元素值无关。如果在容器尾添加6个元素,它们的排列次序将和添加次序一致。STL提供3个定义好的序列式容器:vector,deque,list
7.关系型容器,是一种已序群集,元素位置取决于特定的排序准则。如果将6个元素添加到这样的群集中,它们的位置取决于元素值,和插入次序无关。STL提供了4个关系型容器:set,multiset,map,multimap。
8.STL容器都必须满足以下3个条件:
1)容器进行元素的插入操作时,内部实现的是拷贝操作,置于容器内。因此STL容器内的每一个元素都必须能够被拷贝。也就是说要存放到容器内的对象具有公有属性的拷贝构造函数。如果容器内放置的是指针类型的数据则无此要求。
2)总体而言,所有元素形成一个次序。也就是说多次遍历每个元素时的次序总是相同的。
3)一般而言,各项操作并非绝对安全。调用者必须确保传给操作函数的参数符合需求,违反这些需求(例如使用非法索引)会导致未定义的行为,通常STL在这个情况下不会抛出异常。
11.迭代器:迭代器是一个“可遍历STL容器內全部或部分元素”的对象。一个迭代器用來指出容器中的一个特定位置。
12.几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。
13.将迭代器前进至下一个元素。大多数迭代器还可使用operator--退回到前一个元素。(比如在链表中指针的偏移)
14.容器中的所有区间都是左闭右开的。
15.begin()返回一个迭代器,指向容器起始点,也就是第一个元素(如果有的话)的位置。
16.end()返回一个迭代器,指向容器结束点。结束点在最后一个元素之后,这样的迭代器又称作“逾尾”迭代器。指向最后一个元素的下一个位置。
17.算法部分主要由头文件