题目的主要信息:
- 输入5个数,将其保存到vector容器中
- 利用正向迭代器和反向迭代对其分别遍历正序输出、逆序输出
具体做法:
对于迭代器,我们可以看成C++中的指针,它指向容器的某个位置,使用*可以访问该位置的值。
我们输入数据以后,将迭代器指向vector的第一个位置,然后遍历直到迭代器指向vector的末尾(注意:v.begin()这个位置是有值的,v.end()这个位置没有值),我们输出其中迭代器经过的值,其中迭代像指针一样可以用++遍历。
从后往前输出是一样的,我们正序已经将迭代器移到了结尾,后面再将其逆向移回去,输出每个值即可,注意一开始的结尾是没有值的,要先自减一位才有值,直到到了vector的开头。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
int a;
while(cin >> a) //输入
v.push_back(a);
vector<int>::iterator iter = v.begin(); //迭代器指向vector第一个位置
while(iter != v.end()){ //从第一个位置遍历到尾
cout << *iter << " "; //输出
iter++;
}
cout << endl; //换行
while(iter != v.begin()){ //从尾遍历到头部
iter--;
cout << *iter << " ";
}
cout << endl;
return 0;
}
复杂度分析:
- 时间复杂度:,为vector数组的长度,遍历两次
- 空间复杂度:,数组vector属于必要空间,无额外空间