一、STL是什么
STL(Standard Template Library)标准库:基本数据结构和基本的算法。
二、STL组成
容器,迭代器,适配器,算法,函数对象(防函数),分配器
三、顺序容器
容器 | 模板 | 特点 |
---|---|---|
向量容器 | vector |
快速在后面添加删除元素,直接访问任何元素 |
双向列表容器 | list |
在任何位置快速插入,删除元素 |
双向链表容器 | deque |
略 |
四、vector说明以及练习
用法:vector<type> v(元素个数,初始化元素)
例子:说是初始化一个所有元素为0的十个元素的整型数组
vector<int> v(9,0) => int v[10] = {0};
特别用法:
a.迭代器
迭代器 | 作用 | 顺序容器 |
---|---|---|
c.begin() |
第一个元素地址 | - |
c.end() |
最后一个元素的下一个地址 | - |
c.rbegin() |
反向头迭代 | - |
c.rend() |
反向为迭代 | - |
函数 | 作用 | 返回值 |
---|---|---|
v.push_back() |
追加元素 | - |
v.pop_back() |
删除最后一个元素 | - |
v.size() |
获取数组所有元素个数 | - |
v.clear() |
清除数组 | - |
v.empty() |
判断数组是否为空 | bool类型 |
用法:1.vector<type> v;
2.vector<type>::iterator it=begin();
例子:遍历上面的数组
1.正向遍历
int main(){
vector<int > v;
int n;
while (cin >> n){
v.push_back(n);//尾部添加元素
}
v[5] = 10; //数组式用法改变元素值
v.pop_back(); //删除尾元素
for (int i=0;i<v.size();++i){ //v.size()获取数组元素个数
cout << v[i] << endl;
}
}
#include <iostream>
#include <vector>
using namespace std;
int main(){
vevtor<int> v(9,0);
for(vector<int> iterator it = begin();it != v.end(); ++it){
cout << *it << " ";
}
cout << endl;
}
2.逆向遍历
int main() {
vector<int> v(9,0);
for(vector<int> reverse_iterator it = v.rbegin();++it){
cout << *it << " ";
}
cout << endl;
}
五、list用法和vector类似
注意:迭代器都可以用;算法使用需要加头文件<algorithm>
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
int main(){
list<int> v; //
int n;
while(cin >> n){
v.push_back(n);//
}
// v[5] = 10;//
//
//for(int i=0;i<v.size();++i){
// cout << v[i] << endl;
//}
//
v.pop_back();
//for(int i=0;i<v.size();++i){
// cout << v[i] << endl;
//}
// while遍历
list<int>::iterator it = v.begin();
while(it != v.end()){
cout << *it << " ";
++it;
}
cout << endl;
//
for(list<int>::iterator it = v.begin();it != v.end();++it){
cout << *it << " ";
}
cout << endl;
// reverse(v.begin(),v.end());//将数组反向
// 反向遍历
for(list<int>::reverse_iterator it = v.rbegin();it != v.rend();++it){
cout << *it << " ";
}
cout << endl;
int arr[] = {1,2,3,4,5};
int* p = arr;
while(p != arr+5){
cout << *p << " ";
++p;
}
cout << endl;
}
list下节了解详情
作者:谦放
链接:https://www.jianshu.com/u/9cd2da70288b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。