可以粗切把迭代器当做指针来认识。
创建——
类似模板,vector容器支持多种类型的数据存放:
vector<int> v;
对于迭代器,若想遍历其内部元素,则需要使用容器所对应的迭代器。迭代器在使用时有经典的两种用法——
起始迭代器:vector<int>::iterator itBegin = v.begin();
结束迭代器:vector<int>::iterator itEnd = v.end();
值得注意的是,虽然起始迭代器指向容器的首位元素,但结束迭代器指向的是容器最后一位元素的后一位。
要取出元素的话,使用 * 就可以了,如打印操作:
cout << *itBegin << endl;
容器自带的打印函数——for_each(v.begin(),v.end(),Print );
其中Print函数需手写,写法固定,如:
void Print(int val)//类型按需求替换
{
cout << val << endl;
}
容器嵌套容器(类似多维数组)
传统方法:理解为创造一个储存类型为容器的容器
//创建
vector<vector<int>> v;
vector<int> v1;
v1.push_back(1);
v.push_back(v1);
//用迭代器遍历
for(vector<vector<int>>::iterator it = v.begin(); it !=v.end(); if++;){
for(vecrot<int>::iterator vit = (*it).begin(); vit !=(*it).end(); vit++;){
cout << *vit << endl;
}
}
之前做题的时候,用vector容器嵌套时,就直接当二维数组使用,这部分还未学到,区别是什么?暂且保留疑问