详见:
https://www.nowcoder.com/practice/0f7ab22e60ee4574a9d9c81412b26595?tpId=225&tqId=2193295&ru=/practice/f5e0b2ea13ee40308fcc275c0d06053f&qru=/ta/primary-grammar-cpp/question-ranking
具体做法:
对于迭代器,我们可以看成C++中的指针,它指向容器的某个位置,使用*可以访问该位置的值。

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

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

用while

#include <iostream>
// write your code here......
#include <vector>
#include <bits/stdc++.h>

using namespace std;

int main() {

    // write your code here......
    //定义容器对象
    vector<int> v;
    int a;
    //键盘输入数据,并放入容器中。这样不限制输入数据个数。
    while(cin >> a){
        v.push_back(a);
    }
    // 声明迭代器指针,指向容器开头位置
    vector<int>::iterator iter = v.begin();
    //正向遍历并输出元素
    while(iter != v.end()){
        cout << *iter << " ";
        iter++;
    }
    //输出空行
    cout << endl;
    //反向遍历并输出元素
    while(iter != v.begin()){
        iter--;
        cout << *iter << " ";
    }

    return 0;
}

用for

  • 正向: vector::iterator it;
    begin()指向第一个元素
    end()指向最后一个元素的后一个位置
    for(it=vc.begin();it!=vc.end();it++)
  • 反向: vector::reverse_iterator itr;
    for(it=vc.rbegin();it!=vc.rend();it++)
    rbegin()指向最后一个元素
    rend()指向第一个元素的前一个位置
#include <iostream>
// write your code here......
#include <vector>
#include <bits/stdc++.h>

using namespace std;

int main() {

    // write your code here......
    vector<int> vc(5);
    for(int i=0; i<5; i++){
        cin >> vc[i];
    }
    vector<int>::iterator  iter;
    for(iter=vc.begin(); iter!=vc.end(); iter++){
        cout << *iter << " ";
    }
    cout << endl;
    vector<int>::reverse_iterator riter;
    for(riter=vc.rbegin(); riter!=vc.rend(); riter++){
        cout << *riter << " ";
    }

    return 0;
}

#include <iostream>
// write your code here......
#include <vector>
#include <bits/stdc++.h>

using namespace std;

int main() {

    // write your code here......
    vector<int> v;
    int num;
    for(int i=0; i<5; i++){
        cin >> num;
        v.push_back(num);
    }
    for(vector<int>::iterator it = v.begin(); it!=v.end(); it++){
        cout << *it << " ";
    }
    cout << endl;
    for(vector<int>::iterator it = v.end()-1; it != v.begin()-1; it--){ // 
        cout << *it << " ";
    }

    return 0;
}

#include <iostream>
// write your code here......
#include <vector>
#include <bits/stdc++.h>

using namespace std;

int main() {

    // write your code here......
    vector<int> v;
    int num;
    for(int i=0; i<5; i++){
        cin >> num;
        v.push_back(num);
    }
    for(vector<int>::iterator it = v.begin(); it!=v.end(); it++){
        cout << *it << " ";
    }
    cout << endl;
    for(vector<int>::iterator it = v.end()-1; it != v.begin()-1; it--){ // 
        cout << *it << " ";
    }

    return 0;
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐