题目的主要信息:

  • 输入5个数,将其保存到vector容器中
  • 利用正向迭代器和反向迭代对其分别遍历正序输出、逆序输出

具体做法:

对于迭代器,我们可以看成C++中的指针,它指向容器的某个位置,使用*可以访问该位置的值。

我们输入数据以后,将迭代器指向vector的第一个位置,然后遍历直到迭代器指向vector的末尾(注意:v.begin()这个位置是有值的,v.end()这个位置没有值),我们输出其中迭代器经过的值,其中迭代像指针一样可以用++遍历。

从后往前输出是一样的,我们正序已经将迭代器移到了结尾,后面再将其逆向移回去,输出每个值即可,注意一开始的结尾是没有值的,要先自减一位才有值,直到到了vector的开头。

alt

#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;
}

复杂度分析:

  • 时间复杂度:O(n)O(n)nn为vector数组的长度,遍历两次
  • 空间复杂度:O(1)O(1),数组vector属于必要空间,无额外空间