2017-02-28 7 views
-2

.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; 
+10

はい。あなたがそれを試してみるとすぐにそれを理解するでしょう。 – nwp

+0

[cppreference.com](http://cppreference.com)をブックマークし、それをあなたの親友にしてください。あなたは時間をかけてそこに行かなければなりません。あなたは頼むことなくたくさん学ぶでしょう。今のところ、ちょうど[これを読んで](http://en.cppreference.com/w/cpp/container/vector/push_back) – paddy

+0

私はちょうど私が質問した理由、vect.push_back(x)throw vect.at(0)は正常に動作していましたが、これは私が期待していたものの逆でした。 – Jack

答えて

2

push_backの間に違いがベクターに新しいオブジェクトをプッシュあります。 atは、既存のオブジェクトへの参照を返します。インデックスがあなたのコード例のように範囲外である場合、atは例外をスローします。

4

std::vector::push_backはオブジェクトにメモリを割り当て、コンテナに挿入します。

std::vector:atインデックスを使用して既存のオブジェクトを取得するために使用することを意味します。オブジェクトがコンテナに存在しない場合、例外がスローされます

0

vector.push_backを使用して空のベクトルを埋め込むことができます。しかし、vectorが空であるのでvector.at()を使用すると、例外がスローされます。除き


std::vector<int> vector(10); // for 10 integer 
vector.at(0) = 3; 
std::cout << vector[ 0 ] << '\n'; // 3 
関連する問題