は.at(vect.size())の差異= x;とvect.push_back(x);
int x{5};
std::vector<int> vect;
vect.push_back(x);
と
int x{5};
std::vector<int> vect;
vect.at(0) = x;
は.at(vect.size())の差異= x;とvect.push_back(x);
int x{5};
std::vector<int> vect;
vect.push_back(x);
と
int x{5};
std::vector<int> vect;
vect.at(0) = x;
push_back
の間に違いがベクターに新しいオブジェクトをプッシュあります。 at
は、既存のオブジェクトへの参照を返します。インデックスがあなたのコード例のように範囲外である場合、at
は例外をスローします。
std::vector::push_backはオブジェクトにメモリを割り当て、コンテナに挿入します。
std::vector:atインデックスを使用して既存のオブジェクトを取得するために使用することを意味します。オブジェクトがコンテナに存在しない場合、例外がスローされます
vector.push_back
を使用して空のベクトルを埋め込むことができます。しかし、vector
が空であるのでvector.at()
を使用すると、例外がスローされます。除き
:
std::vector<int> vector(10); // for 10 integer
vector.at(0) = 3;
std::cout << vector[ 0 ] << '\n'; // 3
はい。あなたがそれを試してみるとすぐにそれを理解するでしょう。 – nwp
[cppreference.com](http://cppreference.com)をブックマークし、それをあなたの親友にしてください。あなたは時間をかけてそこに行かなければなりません。あなたは頼むことなくたくさん学ぶでしょう。今のところ、ちょうど[これを読んで](http://en.cppreference.com/w/cpp/container/vector/push_back) – paddy
私はちょうど私が質問した理由、vect.push_back(x)throw vect.at(0)は正常に動作していましたが、これは私が期待していたものの逆でした。 – Jack