STL概述
STL(standard template kibrary)即标准模板类库。STL是C++的一部分,所以不用单独安装
STL作用
C++对模板支持的很好,STL借助模板将数据结构及其算法实现了一边,并且做到了数据结构和算法的分离。例如:vector的底层是顺序表(数组),list的底层是双向链表,deque的底层是循环队列,set的底层是红黑树,hash_set的底层是哈希表。
STL存储位置
STL位于各个C++头文件中,即它并非以二进制的形式存在,而是以源代码的形式提供
四、STL的特性
STL不是面向对象的。为了具有足够的通用性,STL主要依赖于模板而不是封装、继承、多态。由于STL基于模板,内联函数的使用生成的代码短小高效。
代码示例
vector<int>n;//定义一个数组a,长度我0,但和普通数组不同的是,改数组可以自动变长
for(int i=0; i<10; i++)
{
n.push_back(i);//向数组n中添加10个元素
}
for(int i=0; i<10; i++)
cout << n.at(i) << " "; //打印输出数组中的值
cout << endl;
cout << "STL大小: " << n.size() << endl;
n.resize(12);//手动修改数组大小
n[11] = 12;
cout << "STL大小: " << n.size() << endl;
n.clear();//直接清掉数组,此时数组长度为0
cout << "STL大小: " << n.size() << endl;
n.resize(20,9);//重新调整数组大小,并赋值20个9
cout << "STL大小: " << n.size() << endl;
for(int i=0; i<20; i++)
cout << n.at(i) << " "; //打印输出数组中的值
cout << endl;
// 使用迭代器 iterator 访问值
vector<int>::iterator v = n.begin();
while( v != n.end()) {
cout << "value of v = " << *v << endl;
v++;
}
return 0;
结果展示
0 1 2 3 4 5 6 7 8 9
STL大小: 10
STL大小: 12
STL大小: 0
STL大小: 20
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9
value of v = 9