一、STL简介
STL(standard template linbrary)
标准模板库
,是C++程序设计语言的标准程序库,是一个包罗算法与数据结构的软件框架。
使用了泛型编程
的思想,对我们常用的数据结构:顺序表、链表、树、哈希以及常用的查找、排序等算法使用模板进行了封装
,而且从运行效率以及内存使用上都基本达到了最优。
二、STL六大组件
1.容器
解释:对不同数据结构的
封装
根据数据在容器中排序特性:关联性容器、序列式容器
序列式容器:按照其加入容器的先后次序,不一定有序
关联式容器:存放的是一个一个键值对,即KV模型,键值对实际上是结构体
1.1 vector
vector(动态数组),
一段连续的空间
,当容器中的元素存放满时,扩容具体操作:动态开辟原空间大小两倍
的空间,接着将原空间的元素拷贝到新空间中,释放原空间。
1.1.1 vector的基本使用
这里演示部分接口的使用
void Testvector1()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.push_back(5);
vector<int>::iterator it1 = v1.begin();
//while (it1 != v1.end())
//{
// cout << *it1 << " ";
// ++it1;
//}
//cout << endl;
while (it1 != v1.end())
{
if (*it1 % 2 == 0)
{
*it1 *= 2;
}
cout << *it1 << " ";
++it1;
}
cout << endl;
cout << v1.size() << endl;
cout << v1.capacity() << endl;
}
void Testvector2()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.push_back(5);
//在末尾插入3个4
//v1.insert(v1.end(), 3, 4);
//删除区间内元素
//v1.erase(v1.begin(), v1.begin() + 2);
// assign()方法是给vector进行赋值
// 在进行赋值之前,该方法会先将vector中原有的旧元素erase掉
// 然后再将新元素插入进去
// 给vector中5个值为10的元素
//v1.assign(5, 10);
////清空元素
//v1.clear();
// resize(n,data):将