一.STL
广义:包括算法,容器,迭代器
STL六大组件:容器,算法,迭代器,仿函数,适配器,空间配置器。
容器:类模板 ===> 各种各样的数据结构:数组,链表,栈,队列,树,集合等等。
算法:函数模板:统计,排序,查找,遍历等等,100多种。
迭代器:对容器内的元素提供统一的遍历方式。
单端数组:头文件
#include <vector>
vector<int> v;
v.push_back(xx);
迭代器:大部分容器都有自己的迭代器。
vector<int>::iterator it(迭代的对象);
拥有迭代器的容器都有两种基本的方法:
(1)begin()函数:返回指向第一个元素的迭代器
(2)end() 函数:返回指向最后一个元素的下一个元素的迭代器
迭代器可以近似看成一个指针来使用
vector<int>::iterator it = v.begin();
while(it != v.end())//打印
{
cout << *it <<' ';
it++;
}
cout<<endl;
算法:数据处理==>靠迭代器
算法的头文件:
#include <algorithm>
二.容器
1、vector 常用函数
cout << " " << v.back() << endl;
cout << " " << v.front() << endl;
cout << " " << v.size() << endl;
while (!v.empty())//判断是否为空
{
cout << v.back() << " ";
v.pop_back();
}
cout << endl;
2、通过数组下标访问vector元素
for(int i = 0; i < v1.size(); i++)
{
// v1[i] = i;//如果数组下标越界,就发生段错误
v1.at(i) = i;//如果at越界,会抛出一个异常
}
注意下面这种打印方式:返回的是值
for (auto aa:v4)
{
cout << aa << endl;
}
数组:随机访问迭代器
3、迭代器
1.正向迭代器
从左往右遍历
vector<int>::iterator it = v.begin();
2.反向迭代器
从右往左遍历
rbegin():返回指向最后一个元素的迭代器
rend() :返回指向第一个元素的前一个元素的迭代器
vector<int>::reverse_iterator it1 = v.rbegin();
3.const迭代器
vector<int>::const_iterator cit;
vector<int>::const_reverse_iterator crit;
4、插入与删除:
第一个参数:插入的位置===>迭代器
v.insert(v.begin(), 10);
删除元素:通用的方式:通过迭代器删除
v.erase(v.begin());
清空容器:
1.v.clear();
2.构建一个空的容器,与当前容器进行交换
vector<int> v2; //空的
v1.swap(v2); //v1 和v2进行交换
逆序:
reverse(v2.begin(), v2.end());