75欠片目:STL~vector基礎編~
こんにちは。もうすぐ健康診断があるvoidです。気になっている症状の欄にいくつか当てはまる項目があるので少し不安です...
本日はSTL(StandardTemplateLibrary) のうち、vectorの基礎についてです。
※)画像に特に意味はありません。
◆==目次==◆
vectorとは
C++の標準テンプレートライブラリ(StandardTemplateLibrary)の機能の一つに、vectorというものがあります。
標準テンプレートライブラリとは、頻繁に使われるデータ構造やアルゴリズムなどを使えるようにC++で標準で用意してくれているライブラリの事です。
そのデータ構造の内、一つの型のデータを複数まとめて入れることが出来る
コンテナクラスという、配列のようなものがあります。
そのコンテナクラスの内、最も基本的な機能がVectorです。
メリット
Vectorを使うメリットは何か?
先述した通りvectorはほとんど配列と同じような役割を果たします。では何が違うのか?
配列は宣言時に
int array[10];
と宣言するとint型の変数100個分のメモリを確保できますが、プログラム内で10をオーバーしていしまうとエライことになります。(具体的に言うと配列を破壊して、他の変数の値を勝手に変えに行ったりします。良く起こる超常的なバグの原因は大体こいつが原因です...)
なら最初から余裕をもって、
int array[100];
と宣言してしまえばいいではないのか?
そういうわけでもないのです。結果として13個とかしか使わなかった場合、かなりの量のメモリが無駄に確保されてしまいます。
これに対して、メモリを動的に確保してくれるのがvectorです。
vectorは配列と同じように連続したアドレスにデータを持っています。そのため、データへのアクセスも高速に行うことが出来ます。さらに
宣言
vectorを使うには<vector>をインクルードする必要があります。
また名前空間stdを使用しているのでusing namespace std; を1度記述するか、
使用するたびにstd::を記述する必要があります。
#include<vector> ... std::vector<int> v;
要素を追加
vectorの基本的な操作の一つに要素の追加があります。
vectorに要素を追加する場合は、push_backというメンバ関数を使用します。
std::vector<int> v; // vectorを作成 v.push_back(10); // vectorに要素10を追加