2012-06-13 187 views
2

下面在c++程序,矢量::的push_back VS矢量::操作符[]

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

int main() 
{ 
    vector<int> numbers; 

    numbers.push_back(2); 
    numbers.push_back(10); 
    numbers.push_back(5); 
    numbers.push_back(3); 
    numbers.push_back(7); 

    numbers[3] = 8; 
    numbers[5] = 11; 

    for(int i=0; i<numbers.size(); ++i) 
    { 
      cout<<" "<<numbers[i]; 
    } 
}  

看到它ideone

這裏,numbers[3]正在工作,但numbers[5]
它看起來像vector :: operator []不會像vector :: push_back那樣增加矢量的大小。
那麼,是這兩者之間的唯一區別還是別的

+2

這就是區別。你爲什麼在問題中回答你的問題? –

回答

7

push_back用指定的值在後面創建一個新元素。 operator[]要求元素在那裏;它只是訪問它。究其原因[5]不工作是因爲你有5個元素,讓你的索引範圍從0到4

一般來說,添加新的元素時,push_back優於resize,其次是operator[]。不過,只有一個可以用於讀取,並且還需要operator[]來維護正常的數組語法。