Vector

Vector

 >> NGL >> リファレンス >> Containerカテゴリ >> Containerのクラス >> Vector

言語: Visual Basic    C#

最終更新日付:2012/06/21 12:06:05

説明

Vector はシーケンスの末尾に自由に要素を追加/削除できる、ランダムアクセス可能なコンテナです。

 

Vectorの特徴

ここでは、Vector クラスの特徴について説明します。各コンテナの特徴を比較した表は「時間計算量について」をご覧下さい。

任意の要素へのアクセスが定数時間で行える

Vector はランダムアクセスコンテナです。インデックスを指定しての要素の取得・設定を定数時間で実行します。NGL が提供するコンテナの中で、任意要素への定数アクセスを実現しているのは VectorDeque だけです。

末尾への要素の追加・削除が定数時間で行える

Vector は、シーケンスの末尾への追加・削除を定数時間で実行します。このため、Vector はスタックなどの実装に利用できます。実際、VectorStack がバインドするコンテナの候補になります。

先頭への要素の追加・削除には線形時間を要する

Vector は先頭要素に対する追加・削除を直接サポートしません。Vector の実装は非常にシンプルで、反復子も配列のインデックスを保持しているだけです。そのため、先頭への追加・削除は Insert( ) および Erase( ) を使用する必要がありますが、この場合、処理には線形時間を要し、さらに既存の反復子は無効になります。先頭への追加・削除が頻繁に発生するような局面には Vector はあまり向いていません。

末尾以外での挿入・削除には線形時間を要する

先の話とすこし重なりますが、Vector はシーケンス中央(つまり、両端でない場所)での要素の追加・削除にも線形時間計算量を必要とします。これはランダムアクセスコンテナの宿命といってもよいでしょう。

要素の検索にも線形時間を要する

Vector は線形コンテナですから、要素の検索には総当りで臨むしかありません。つまり、検索にも線形時間計算量を必要とします。場合によっては、Algorithm.SortAlgorithm.BinarySearch を組み合わせた方が早いかもしれません。

 

ここまででわかるのは、Vector は末尾への追加・削除とランダムアクセスのみを定数時間でこなし、それ以外は線形時間を要するということです。そう考えると、他のコンテナと比べてそれほど優秀でないということになってしまうのですが、しかし Vector は他のコンテナに比べてメモリ消費量が少ないという隠れたメリットがあります。

 

IEnumerable(Of T) をサポート

Vector は IEnumerable(Of T) インターフェースを実装しています(ここで、T はコンテナが格納する要素の型です)。そのため、For Each 構文を利用して要素の反復を行うことができます。

IEnumerable<T> をサポート

Vector は IEnumerable<T> インターフェースを実装しています(ここで、T はコンテナが格納する要素の型です)。そのため、foreach 構文を利用して要素の反復を行うことができます。

ページトップへ

 

Vectorの反復子

Vector クラスはランダムアクセス反復子をサポートします。ランダムアクセス反復子に関する詳細は RandomAccessIterator を参照してください。

ページトップへ

 

メソッド一覧

Vector クラスのメソッドの一覧を以下に示します。各コンテナがサポートするメソッドの一覧は「コンテナのメソッド」 をご覧下さい。

コンストラクタ

メソッド 説明
New いくつかの方法でコンテナオブジェクトを作成します。
メソッド 説明
Vector いくつかの方法でコンテナオブジェクトを作成します。

参照・設定 

メソッド 説明
Front シーケンスの先頭要素の値を取得/設定します
Back シーケンスの最後の要素の値を取得/設定します
At シーケンスの指定した位置の要素の値を取得/設定します

追加・取出

メソッド 説明
PushBack シーケンスの末尾に要素を追加します
PopBack シーケンスの末尾から要素を取り除きます

反復子

メソッド 説明
Begin シーケンスの先頭を指す反復子を返します
End シーケンスの終端を指す反復子を返します
RBegin 逆シーケンスの先頭を指す逆方向反復子を返します
REnd 逆シーケンスの末尾を指す逆方向反復子を返します

挿入・削除

メソッド 説明
Insert シーケンスの指定した位置に要素を挿入します
Erase シーケンスの指定した位置から要素を取り除きます
Clear シーケンス内の要素を全て取り除きます

サイズ

メソッド 説明
Empty 空シーケンスかどうかを返します
Size シーケンスが管理する要素の個数を返します
Resize シーケンスが管理する要素の個数を設定します
Capacity 予約済みの配列の容量を返します
Reserve 配列を予約します
ShrinkToFit 予約済みの配列の容量を減らします。
MaxSize 管理可能な要素の最大数を返します

置き換え

メソッド 説明
Assign シーケンスを指定した別のシーケンスで置き換えます
Swap 別の Vector オブジェクトと管理シーケンスを交換します

比較

メソッド 説明
IsEqual 他の Vector オブジェクトと等しいかどうか調べます。
Compare 他の Vector オブジェクトと辞書順比較をします。

ページトップへ

 

 


Copyright(C) 2011-2012 Show MATSUOKA.
Powered by Prefab.