STL(Standard Template Library)标准模板库
STL广义上分为:容器(container)、算法(algorithm)和迭代器(iterator)。
容器和算法之间通过迭代器进行无缝连接。
STL共分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器、空间配置器。
容器算法迭代器初识
vector存放内置数据类型
//创建vector容器
vector<int> v;
//向容器中插入数据
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
//通过迭代器访问容器中的数据
//方法一:
vector<int>::iterator itBegin=v.begin(); //起始迭代器(指针),指向容器中的第一个元素
vector<int>::iterator itEnd=v.end(); //结束迭代器,指向容器中最后一个元素的下一个位置
while(itBegin!=itEnd)
{
cout<<*itBegin<<endl;
itBegin++;
}
//方式二
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
cout<<*it<<endl;
}
//方法三
void myPrint(int val)
{
cout<<val<<endl;
}
//使用for_each 时记得包含头文件#include<algorithm>
for_each(v.begin(),v.end(),myPrint);
vector存放自定义数据类型
class Person
{
public:
Person(string name,int age)
{
this->m_Name=name;
this->m_Age=age;
}
string m_Name;
int m_Age;
};
void testVector()
{
//创建vector容器
vector<Person> v;
Person p1("a",10);
Person p2("b",11);
Person p3("c",12);
Person p4("d",13);
//向容器中插入数据
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
//遍历容器中的数据
for(vector<Person>::iterator it=v.begin();it!=v.end();it++)
{
//方法一:注意*it代表的东西就是尖括号里的的内容,即<Person>
//cout<<"姓名:"<<(*it).m_Name<<"年龄:"<<(*it).m_Age<<endl;
//方法二
cout<<"姓名:"<<it->m_Name<<"年龄:"<<it->m_Age<<endl;
}
}
Vector容器嵌套容器
//容器嵌套容器
void testVector()
{
vector<vector<int>>v;
//创建小容器
vector<int>v1;
vector<int>v2;
vector<int>v3;
vector<int>v4;
//向小容器中添加数据
for(int i=0;i<4;i++)
{
v1.push_back(i+1);
v2.push_back(i+2);
v3.push_back(i+3);
v4.push_back(i+4);
}
//将小容器插入到大容器
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
v.push_back(v4);
//通过大容器,把所有数据遍历一遍
for(vector<vector<int>>::iterator it=v.begin();it!=v.end();it++)
{
for(vector<int>::iterator vit=(*it).begin();vit!=(*it).end();vit++)
{
cout<<*vit<<" ";
}
cout<<endl;
}
}