矢量::的push_back VS矢量::操作符[](vector::push_back vs ve

2019-06-25 10:24发布

下面的c++程序,

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]
它看起来像,矢量:: operator []的不增加像载体::向量的push_back的大小。
所以, 这是这两个或别的东西之间的唯一区别是吗

Answer 1:

push_back创建与指定的值后的新元素。 operator[]要求元件在那里; 它只是访问它。 究其原因[5]不工作是因为你有5个元素,让你的索引范围从0到4。

通常,添加新元素时, push_back优于resize ,接着operator[] 仅一个可用于读取,虽然和operator[]也需要维持正常数组语法。



Answer 2:

的std ::矢量::操作符[] : “访问指定的元素”

的std ::矢量::的push_back :“增加了一个元件到端”

我在看C ++引用如此惊人。 你应该试试看。



文章来源: vector::push_back vs vector::operator[]