STL容器:C++标准库的一部分,用C++ Template机制表达泛型的库,用泛型技术设计完成实例。
Template特性:
(1)类模板偏特化,进行严格的类型检查。
(2)默认模板参数,模板中允许用默认参数。
(3)成员模板,模板类中包含模板函数
(4)关键字typename,类型前的标识, typename T::SubType *ptr 指向T中子类型的指针
template内被typename修饰的标识才会被当做类型,否则当做值。
六大组件:
(1)容器(container)
(2)算法(Algorithm)
(3)迭代器(Iterator)
(4)仿函数(Function Object)
(5)适配器(Adaptor)
(6)空间配置器(allocator)智能分配与管理内存
容器的分类: 1.序列式容器,元素位置固定:vector deque list
2.关联式容器,元素位置取决于特定的排序准则,与插入顺序无关: set 集合 map 映射 multiset multimap
1.线性容器vector,array,tuple 与 链式容器list的基本操作
线性容器(array,vector,tuple)的介绍见播客 vector array tuple
#include<iostream>
#include<stdio.h>
#include<vector>
#include<array>
#include<tuple>
#include<list>
//tuple<int, double, char *> mytuple = {100,10.8,"123456789"};
using namespace std;
//线性容器
void mainx()
{
//栈上的静态数组
array<int, 3>myarray = { 0,0,0 };
//堆上的动态数组
vector<int> myvector;
myvector.push_back(1);
}
//list适用于频繁插入删除的情况
void mainl1()
{
//不可通过下标访问
list<int> mylist;
mylist.push_back(1);
mylist.push_back(2);
mylist.push_back(3);
//通过迭代器删除元素
auto i = mylist.begi