import "container/vector"

要素の並び順を管理するためのコンテナを実装しています。またVectorは動的にサイズを拡大/縮小することができます。

パッケージファイル

defs.go intvector.go stringvector.go vector.go

IntVector型

IntVectorは、順に並んでいるint型の要素を扱うためのコンテナです。長さとキャパシティは必要に応じて自動調整されます。ゼロ値は、空のベクタでいつでも利用可能な状態です。

type IntVector []int

(*IntVector) AppendVector関数

func (p *IntVector) AppendVector(x *IntVector)

AppendVectorは、このベクタの最後にxのすべてを追加します。

(*IntVector) At関数

func (p *IntVector) At(i int) int

Atは、このベクタのi番目の要素を返します。

(*IntVector) Cap関数

func (p *IntVector) Cap() int

Capは、このベクタのキャパシティを返します。これは長さをリサイズすることなく拡大可能な上限値で、cap(*p)と同じです。

(*IntVector) Copy関数

func (p *IntVector) Copy() IntVector

Copyは、vectorのコピーを作成し、返します。

(*IntVector) Cut関数

func (p *IntVector) Cut(i, j int)

Cutは、iからjまでの要素(iとjを含む)を削除します。

(*IntVector) Delete関数

func (p *IntVector) Delete(i int)

Deleteは、ベクタのi番目の要素を削除します。削除した要素以降は詰められ、以前i+1番目だった要素はi番目に変わります。

(*IntVector) Do関数

func (p *IntVector) Do(f func(elem int))

Doは、ベクタの全要素を順番に使ってf関数を呼び出します。f関数内で*pを変更したときの振る舞いは定義されていません。

(*IntVector) Expand関数

func (p *IntVector) Expand(i, n int)

iの位置に要素を挿入します。

(*IntVector) Extend関数

func (p *IntVector) Extend(n int)

ベクタの最後に要素を追加します。

(*IntVector) Insert関数

func (p *IntVector) Insert(i int, x int)

Insertは、インデックスiの要素の前に要素xを挿入します。

(*IntVector) InsertVector関数

func (p *IntVector) InsertVector(i int, x *IntVector)

InsertVectorは、ベクタにベクタxの内容を挿入します。挿入後にインデックスiの位置は挿入したxの0番目の要素となります。

(*IntVector) Last関数

func (p *IntVector) Last() int

Lastは、最大インデックスの要素を返します。

(*IntVector) Len関数

func (p *IntVector) Len() int

Lenは、ベクタの要素数を返します。これはlen(*p)と同じです。

(*IntVector) Less関数

func (p *IntVector) Less(i, j int) bool

Lessは、i番目の要素がj番目の要素よりも小さいかどうかを表す論理値を返します。

(*IntVector) Pop関数

func (p *IntVector) Pop() int

Popは、ベクタの最後の要素を削除します。

(*IntVector) Push関数

func (p *IntVector) Push(x int)

Pushは、ベクタの最後にxを追加します。

(*IntVector) Resize関数

func (p *IntVector) Resize(length, capacity int) *IntVector

Resizeは、ベクタの長さとキャパシティを変更します。新しい長さがいまより短かければ、Resizeは以降の要素を破棄します。新しい長さがいまより長ければ、その差の分だけ要素のゼロ値を加えます。新しい長さまたはキャパシティが、いまのキャパシティより短いときは、パラメータで指定したキャパシティは無視されます。サイズ変更後のベクタのキャパシティは指定したキャパシティより大きい値になる可能性があります。

(*IntVector) Set関数

func (p *IntVector) Set(i int, x int)

Setは、ベクタのi番目の要素へ値xをセットします。

(*IntVector) Slice関数

func (p *IntVector) Slice(i, j int) *IntVector

Sliceは、元データをスライス(slice [i:j])することでサブベクタを作成し、それを返します。要素はコピーされるため、元のベクタは変更されません。

(*IntVector) Swap関数

func (p *IntVector) Swap(i, j int)

Swapは、インデックスiとjの位置にある要素を入れ替えます。

LessInterface型

LessInterfaceは、sort.Interfaceの部分的なサポートを提供します。

type LessInterface interface {
    Less(y interface{}) bool
}

StringVector型

StringVectorは、順に並んでいるstring型の要素を扱うためのコンテナです。長さとキャパシティは必要に応じて自動調整されます。ゼロ値は、空のベクタでいつでも利用可能な状態です。

type StringVector []string

(*StringVector) AppendVector関数

func (p *StringVector) AppendVector(x *StringVector)

AppendVectorは、このベクタの最後にxのすべてを追加します。

(*StringVector) At関数

func (p *StringVector) At(i int) string

Atは、このベクタのi番目の要素を返します。

(*StringVector) Cap関数

func (p *StringVector) Cap() int

Capは、このベクタのキャパシティを返します。これは長さをリサイズすることなく拡大可能な上限値で、cap(*p)と同じです。

(*StringVector) Copy関数

func (p *StringVector) Copy() StringVector

Copyは、vectorのコピーを作成し、返します。

(*StringVector) Cut関数

func (p *StringVector) Cut(i, j int)

Cutは、iからjまでの要素(iとjを含む)を削除します。

(*StringVector) Delete関数

func (p *StringVector) Delete(i int)

Deleteは、ベクタのi番目の要素を削除します。削除した要素以降は詰められ、以前i+1番目だった要素はi番目に変わります。

(*StringVector) Do関数

func (p *StringVector) Do(f func(elem string))

Doは、ベクタの全要素を順番に使ってf関数を呼び出します。f関数内で*pを変更したときの振る舞いは定義されていません。

(*StringVector) Expand関数

func (p *StringVector) Expand(i, n int)

iの位置に要素を挿入します。

(*StringVector) Extend関数

func (p *StringVector) Extend(n int)

ベクタの最後に要素を追加します。

(*StringVector) Insert関数

func (p *StringVector) Insert(i int, x string)

Insertは、インデックスiの要素の前に要素xを挿入します。

(*StringVector) InsertVector関数

func (p *StringVector) InsertVector(i int, x *StringVector)

InsertVectorは、ベクタにベクタxの内容を挿入します。挿入後にインデックスiの位置は挿入したxの0番目の要素となります。

(*StringVector) Last関数

func (p *StringVector) Last() string

Lastは、最大インデックスの要素を返します。

(*StringVector) Len関数

func (p *StringVector) Len() int

Lenは、ベクタの要素数を返します。これはlen(*p)と同じです。

(*StringVector) Less関数

func (p *StringVector) Less(i, j int) bool

Lessは、i番目の要素がj番目の要素よりも小さいかどうかを表す論理値を返します。

(*StringVector) Pop関数

func (p *StringVector) Pop() string

Popは、ベクタの最後の要素を削除します。

(*StringVector) Push関数

func (p *StringVector) Push(x string)

Pushは、ベクタの最後にxを追加します。

(*StringVector) Resize関数

func (p *StringVector) Resize(length, capacity int) *StringVector

Resizeは、ベクタの長さとキャパシティを変更します。新しい長さがいまより短かければ、Resizeは以降の要素を破棄します。新しい長さがいまより長ければ、その差の分だけ要素のゼロ値を加えます。新しい長さまたはキャパシティが、いまのキャパシティより短いときは、パラメータで指定したキャパシティは無視されます。サイズ変更後のベクタのキャパシティは指定したキャパシティより大きい値になる可能性があります。

(*StringVector) Set関数

func (p *StringVector) Set(i int, x string)

Setは、ベクタのi番目の要素へ値xをセットします。

(*StringVector) Slice関数

func (p *StringVector) Slice(i, j int) *StringVector

Sliceは、元データをスライス(slice [i:j])することで新しいIntVectorを作成して、それを返します。要素はコピーされるため、元のベクタは変更されません。

(*StringVector) Swap型

func (p *StringVector) Swap(i, j int)

Swapは、インデックスiとjの位置にある要素を入れ替えます。

Vector型

Vectorは、順に並んでいるinterface{}型の要素を扱うためのコンテナです。長さとキャパシティは必要に応じて自動調整されます。ゼロ値は、空のベクタでいつでも利用可能な状態です。

type Vector []interface{}

(*Vector) AppendVector関数

func (p *Vector) AppendVector(x *Vector)

AppendVectorは、このベクタの最後にxのすべてを追加します。

(*Vector) At関数

func (p *Vector) At(i int) interface{}

Atは、このベクタのi番目の要素を返します。

(*Vector) Cap関数

func (p *Vector) Cap() int

Capは、このベクタのキャパシティを返します。これは長さをリサイズすることなく拡大可能な上限値で、cap(*p)と同じです。

(*Vector) Copy関数

func (p *Vector) Copy() Vector

Copyは、vectorのコピーを作成し、返します。

(*Vector) Cut関数

func (p *Vector) Cut(i, j int)

Cutは、iからjまでの要素(iとjを含む)を削除します。

(*Vector) Delete関数

func (p *Vector) Delete(i int)

Deleteは、ベクタのi番目の要素を削除します。削除した要素以降は詰められ、以前i+1番目だった要素はi番目に変わります。

(*Vector) Do関数

func (p *Vector) Do(f func(elem interface{}))

Doは、ベクタの全要素を順番に使ってf関数を呼び出します。f関数内で*pを変更したときの振る舞いは定義されていません。

(*Vector) Expand関数

func (p *Vector) Expand(i, n int)

iの位置に要素を挿入します。

(*Vector) Extend関数

func (p *Vector) Extend(n int)

ベクタの最後に要素を追加します。

(*Vector) Insert関数

func (p *Vector) Insert(i int, x interface{})

Insertは、インデックスiの要素の前に要素xを挿入します。

(*Vector) InsertVector関数

func (p *Vector) InsertVector(i int, x *Vector)

InsertVectorは、ベクタにベクタxの内容を挿入します。挿入後にインデックスiの位置は挿入したxの0番目の要素となります。

(*Vector) Last関数

func (p *Vector) Last() interface{}

Lastは、最大インデックスの要素を返します。

(*Vector) Len関数

func (p *Vector) Len() int

Lenは要素数を返します。p == nilの場合はLenは0となります。

(*Vector) Less関数

func (p *Vector) Less(i, j int) bool

Lessは、i番目の要素がj番目の要素よりも小さいかどうかを表す論理値を返します。

(*Vector) Pop関数

func (p *Vector) Pop() interface{}

Popは、ベクタの最後の要素を削除します。

(*Vector) Push関数

func (p *Vector) Push(x interface{})

Pushは、ベクタの最後にxを追加します。

(*Vector) Resize関数

func (p *Vector) Resize(length, capacity int) *Vector

Resizeは、ベクタの長さとキャパシティを変更します。新しい長さがいまより短かければ、Resizeは以降の要素を破棄します。新しい長さがいまより長ければ、その差の分だけ要素のゼロ値を加えます。新しい長さまたはキャパシティが、いまのキャパシティより短いときは、パラメータで指定したキャパシティは無視されます。サイズ変更後のベクタのキャパシティは指定したキャパシティより大きい値になる可能性があります。

(*Vector) Set関数

func (p *Vector) Set(i int, x interface{})

Setは、ベクタのi番目の要素へ値xをセットします。

(*Vector) Slice関数

func (p *Vector) Slice(i, j int) *Vector

Sliceは、元データをスライス(slice [i:j])することでサブベクタを作成し、それを返します。要素はコピーされるため、元のベクタは変更されません。

(*Vector) Swap関数

func (p *Vector) Swap(i, j int)

Swapは、インデックスiとjの位置にある要素を入れ替えます。