Vector
>> NGL >> リファレンス >> Containerカテゴリ >> Containerのクラス >> Vector
言語: Visual Basic C#
最終更新日付:2012/06/21 12:06:05
説明
Vector はシーケンスの末尾に自由に要素を追加/削除できる、ランダムアクセス可能なコンテナです。
Vectorの特徴
ここでは、Vector クラスの特徴について説明します。各コンテナの特徴を比較した表は「時間計算量について」をご覧下さい。
任意の要素へのアクセスが定数時間で行える
Vector はランダムアクセスコンテナです。インデックスを指定しての要素の取得・設定を定数時間で実行します。NGL が提供するコンテナの中で、任意要素への定数アクセスを実現しているのは Vector と Deque だけです。
末尾への要素の追加・削除が定数時間で行える
Vector は、シーケンスの末尾への追加・削除を定数時間で実行します。このため、Vector はスタックなどの実装に利用できます。実際、Vector は Stack がバインドするコンテナの候補になります。
先頭への要素の追加・削除には線形時間を要する
Vector は先頭要素に対する追加・削除を直接サポートしません。Vector の実装は非常にシンプルで、反復子も配列のインデックスを保持しているだけです。そのため、先頭への追加・削除は Insert( ) および Erase( ) を使用する必要がありますが、この場合、処理には線形時間を要し、さらに既存の反復子は無効になります。先頭への追加・削除が頻繁に発生するような局面には Vector はあまり向いていません。
末尾以外での挿入・削除には線形時間を要する
先の話とすこし重なりますが、Vector はシーケンス中央(つまり、両端でない場所)での要素の追加・削除にも線形時間計算量を必要とします。これはランダムアクセスコンテナの宿命といってもよいでしょう。
要素の検索にも線形時間を要する
Vector は線形コンテナですから、要素の検索には総当りで臨むしかありません。つまり、検索にも線形時間計算量を必要とします。場合によっては、Algorithm.Sort と Algorithm.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.