目录
STL
标准模板库
容器: 特殊的数据结构,实现了数组、链表、队列等待,实质是模板类 迭代器: 一种复杂的指针,可以通过其读写容器中的对象,实质是运算符的重载 算法: 读写容器对象的逻辑算法:排序、遍历、查找等,实质是模板函数 空间配置器: 容器的空间配置管理的模板类 配接器: 用来修饰容器、仿函数、迭代器接口 仿函数: 类似函数,通过重载()运算符来模拟函数行为的类 STL标准模板库是一种泛型编程。泛型编程关注的是算法,在c++中,利用模板完成编写独立于数据类型的代码 stl容器:数组、链表、队列等,能进行查找、排序、随机排队等 stl序列容器:vector、deque、list stl关联容器:set、multiset、map、multimap stl迭代器:iterator
STL序列容器
vector 将元素置于一个动态数组中加以管理。 优点: 可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快。 缺点:中部或头部安插元素比较费尽 deque 优点: 可以随机存取元素,数组头部和尾部添加或移除元素非常迅速 缺点: 在中部或头部安插元素比较费时 list(双向链表) 不提供随机存储,在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针。
1、vector
vector是向量类型,它可以容纳许多类型数据。 需要加头文件 #include<vector>
1.1 vector初始化
1、vector<int > a(10);//定义了一个10个整型元素的向量,但其中的元素没有给初始值。 2、vector<int> a(10,1);//定义了一个10个整型元素的向量,每个元素初值为1 3、vector《int》 b(a)//用向量b来赋值a,整体赋值 4、vector《int》 b(a.begin(),a.begin+3)//向量a中0到2赋值给b 5、int b[7] = {1,2,3,4,5,6,7}; vector<int> a(b, b+7)//从数组中获得初值 //注意:这里《int》中的类型不局限于int类型
1.2 vector常见用法
a.back(); //返回a的最后一个元素 a.front() ; //返回a中第一个元素 a[i]; //返回a中dii个元素 a.clear() //清空a中元素 a.empty() //判断a是否为空,空返回true,否则返回false a.pop_back() //删除a向量最后一个元素 a.erase(a.begin()+1,a.begin()+3)//从第一个元素删除到begin()+3,但不包括。 a.push.back(5) //在最后一个元素插入一个,其值为5 a.insert(a.begin()+1,3,5) //从第一个元素插入3个元素值为5 a.size() //返回a中元素个数 a.capacity() //返回a在内存中总共可以容纳元素个数 a.resize(10) //调整元素个数,多则删,少则补,其值随机 a.resize(10,2) //调整元素个数,多则删,少则补,其值2 a.swap(b) //将a与b中元素整体性交换 a == b; //向量比较 比较还有:!= , >=, <= , > ,<
1.3 顺序访问
1.3.1 向向量a中添加元素
vector<int> a; for(int i=0;i<10;i++) a.push_back(i);