💬
vectorのbackメソッドで最後の要素にアクセスできる
結論
backメソッドでアクセスできる
ずっとbackメソッドを使わず、vectorのn-1番目を指定してアクセスしていたのでメモしておく
int main()
{
std::vector<int> myVector = {1, 2, 3, 4, 8};
// back()を使用して最後の要素にアクセス
int lastElement = myVector.back();
std::cout << lastElement << std::endl; // 8
return 0;
}
残った疑問点
ドキュメントには計算量が定数時間とあるが、これはO(1)という認識であっているか?
O(N)ならTLEの原因になりそう。後ほど深掘りする
練習問題
Discussion
その認識で正しいです。
std::vector
の要素は連続した領域に割付けられることが保証され、配置は配列と互換性があります。 連続した領域なので複雑なデータ構造を辿る必要もありませんし、最後の要素の位置の計算は簡単にできるのです。連続した位置に配置するというのは単純で便利な反面、連続した領域 (メモリ) を確保しなければならないという制限に縛られているので大きさを伸長するときに連続した場所を確保できなければ別の場所に配置しなおす場合があります。 再配置のコストは大きいので頻繁に再配置が起こるような使い方をすると実行時間が膨れ上がることにつながるので注意を要します。