C++__vector容器的遍历

#include <vector> // 使用vector容器时,需要引入头文件。

 //1、通过无参构造,构造一个空的vector容器。

vector<int> v;

//2、添加若干个元素。

    v.push_back(1);
    v.push_back(2);
    v.push_back(3);

//3.迭代器(iterator):使用普通指针,依次指向vector中的每一个元素。、
    /*
    begin(): 获取到的是vector容器中的首元素的地址。
    end(): 获取到的是vector容器中的最后一位元素的下一位的指针。
    需要注意的是,end()函数返回的迭代器指向的位置是一个不存在的元素,因此不应该对其进行解引用操作。
    如果要访问最后一个元素,应该使用vector容器的back()函数来获取。
    */

    vector<int>::iterator it = v.begin(); // 注意,迭代器获取的是地址。
    cout << "v[0]=" << *it << endl; // v[0]=1

    *it++;
    cout << "v[1]=" << *it << endl; // v[1]=2

    *it++;
    cout << "v[2]=" << *it << endl; // v[2]=3
    
    //*it++;
    //cout << "v[3]=" << *it << endl; // 越界,无法输出结果。

 //使用迭代器,遍历vector容器。(可缩写)

    int i = 0;
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
        cout << "v[" << i++ << "]" << "=" << *it << endl; // 直接输出指针指向的元素。
        /*
        v[0]=1
`       v[1]=2
        v[2]=3
        */
    }

//通过指针,修改元素。

    cout << endl;
    i = 0;
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
        //通过指针,修改元素。
        if (1 == *it) {
            *it = 10;
        }
        cout << "v[" << i++ << "]" << "=" << *it << endl;
        /*
        v[0]=10 // 值已被修改。
        v[1]=2
        v[2]=3
        */
    }

// 缩写迭代器遍历;(只能正序遍历)

    cout << endl;
    i = 0;
    // 依次将v容器中的每一个元素,给ele进行赋值;
    for (int& ele : v) { //注意,加入& 后才可为ele进行赋值。
        if (2 == ele) {
            ele = 20;
        }

        cout << "v[" << i++ << "]" << "=" << ele << endl;
       /* 
       v[0] = 10
       v[1] = 20
       v[2] = 3
       */
    }

//倒序遍历容器。

    cout << endl;
    i = 2;
    for (vector<int>::iterator it = v.end(); it != v.begin();) {
        it--; // 注意:v.end()指向尾元素的下一位,需要指针先向上移动一位才是尾元素的地址。
        cout << "v[" << i-- << "]=" << *it << endl;
        /*
        v[2]=3
        v[1]=20
        v[0]=10
        */
    }