3

以下、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]
vector::operator[] は vector::push_back のように vector のサイズを大きくしないようです。
それで、これがこれら2つの唯一の違いですか、それとも何か他のものがありますか?

4

2 に答える 2

14

std::vector::operator[] : 「指定された要素にアクセスする」

std::vector::push_back : 「最後に要素を追加します」

私は C++ のリファレンスを見るのがとても得意です。あなたはそれを試してみるべきです。

于 2012-06-13T01:33:33.323 に答える
9

push_back指定された値で背面に新しい要素を作成します。operator[]要素がそこにある必要があります。アクセスするだけです。うまくいかない理由[5]は、要素が 5 つあるため、インデックスの範囲が 0 から 4 になるためです。

通常、新しい要素を追加する場合は、 よりpush_backも が優先されresize、その後に が続きoperator[]ます。ただし、読み取りに使用できるのは 1 つだけであり、operator[]通常の配列構文を維持するためにも必要です。

于 2012-06-13T01:25:03.980 に答える