头文件
#include <vector> //vector容器
#include <algorithm> //算法
基本用法&&概念
vector<int> v;
v.push_back(10);
vector<int >::iterator
v.begin();
v.end();
三种遍历方式
#include <vector>
#include <algorithm>void MyPrint(int val)
{cout << val << endl;
}void test01() {//创建vector容器对象,并且通过模板参数指定容器中存放的数据的类型vector<int> v;//向容器中放数据v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);//每一个容器都有自己的迭代器,迭代器是用来遍历容器中的元素//v.begin()返回迭代器,这个迭代器指向容器中第一个数据//v.end()返回迭代器,这个迭代器指向容器元素的最后一个元素的下一个位置//vector<int>::iterator 拿到vector<int>这种容器的迭代器类型vector<int>::iterator pBegin = v.begin();vector<int>::iterator pEnd = v.end();//第一种遍历方式:while (pBegin != pEnd) {cout << *pBegin << endl;pBegin++;}//第二种遍历方式:for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << endl;}cout << endl;//第三种遍历方式://使用STL提供标准遍历算法 头文件 algorithmfor_each(v.begin(), v.end(), MyPrint);
}int main() {test01();system("pause");return 0;
}
vector容器内置对象
容器 放Person对象:
容器 放Person对象指针:存储对象的地址&
注意:此时 it 为二级指针
嵌套容器(二维数组)
嵌套定义:
赋值:先内层赋值,再外层
双层循环遍历:
it:外层vector 地址
vit:内层vector 地址
* it:外层vector 数据 = 内层vector 地址
(* it).begin():内层vector第一个地址
*vit:内层vector 数据
#include <vector>//容器嵌套容器
void test01() {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);}//将容器元素插入到vector v中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;}}int main() {test01();system("pause");return 0;
}