Vector用陣列下標訪問的條件

老司機的詩和遠方發表於2020-04-06

vector實現陣列訪問的條件

通過兩段程式碼測試,我們得出原則就是陣列下標[]訪問,前提就是這樣的元素是存在的,就可以使用這樣的訪問形式,vector容器是過載了陣列的訪問形式。這一點程式設計師務必要小心,因為些這樣的程式是編譯通過的,但是執行的時候記憶體就會報錯!


#include <vector>
#include <iostream>
using namespace std;

int main()
{
    vector<int> test;
    for (int i = 0; i < 10; i++)
        test.push_back(i);
    cout << test[0]<<endl;
    test[0] = 10;
    cout << test[0] << endl;
    while (true)
    {

    }
}

執行平臺VS2013,結果如期若下:
這裡寫圖片描述

或者採用另外一種形式:先直接定義了容器的大小了,如下程式碼:


#include <vector>
#include <iostream>
using namespace std;

int main()
{
    vector<int> test(10);
    for (int i = 0; i < 10; i++)
        test[i] = i;
    cout << test[0]<<endl;
    test[0] = 10;
    cout << test[0] << endl;
    while (true)
    {

    }
}

執行結果是完全一樣的:
這裡寫圖片描述

總結

通過對vector的測試,總結出一點就是要想實現陣列下標的訪問,是什麼時候都可以的事情,應為vector是自帶過載該符號功能,但對於程式設計人員來說需要特別關注訪問的元素記憶體是否存在?!

相關文章