後から要素を追加/削除できるコレクション型クラスです。
概要
配列(Arrays)を使うと同じ型の要素を複数まとめて管理できますが、予め要素数を指定しなければならないため、要素数が可変する場合には使い辛いです。
そんな時に使えるのがVectorクラス。通常の型だけでなくクラス型(プロバイダークラスなど)を格納できる点もポイントです。
よく使うプロパティ/メソッド
要素の追加
命令 | 目的 | 戻り値の型 |
---|---|---|
Push_back(obj) | 「コレクションの最後」に要素を追加 | (無し) |
Insert(idx,obj) | 「指定インデックスの前」に要素を追加 | int |
Insert(idx,cnt,Obj) | 「指定インデックスの前」に要素を追加 (繰り返し) |
int |
要素の削除
命令 | 目的 | 戻り値の型 |
---|---|---|
Pop_back | 「コレクションの最後の」要素を削除 | (無し) |
Erase(idx) | 「指定インデックスの」要素を削除 | int |
Erase(idx1,idx2) | 「指定インデックス範囲の」要素を削除 | int |
Clear | 「すべての」要素を削除 | (無し) |
要素の取得
命令 | 目的 | 戻り値の型 |
---|---|---|
Items[idx] | 「指定インデックスの」要素を取得 | Object |
At(idx) | 「指定インデックスの」要素を取得 | Object |
Front | 「コレクションの最初の」要素を取得 | Object |
Back | 「コレクションの最後の」要素を取得 | Object |
Count | コレクション内の要素数をカウント | int |
判定
命令 | 目的 | 戻り値の型 |
---|---|---|
Empty | コレクションが空であるかチェック | bool |
EasyLanguageサンプルコード
インジケーターを新規作成して以下のコードを貼り付け、チャートに設定ください。結果が印刷ログに表示されます。
using elsystem; using elsystem.collections; Vars: Vector vecData( NULL ), string strOutput( "" ); Once ( LastBarOnChartEx ) Begin ClearPrintLog; //---------------------------------------- // 0. インスタンスの新規作成 //---------------------------------------- vecData = Vector.Create(); //---------------------------------------- // 1. 要素の追加(最後に) //---------------------------------------- vecData.Push_back( 100 ); vecData.Push_back( 200 ); vecData.Push_back( 300 ); vecData.Push_back( 400 ); vecData.Push_back( 500 ); strOutput = ""; For Value1 = 0 to vecData.Count - 1 Begin strOutput += ELString.Format( "{0},", vecData.Items[Value1] ); End; Print( strOutput ); //---------------------------------------- // 2. 要素の追加(指定インデックスの前に) //---------------------------------------- vecData.Insert( 2, 77 ); strOutput = ""; For Value1 = 0 to vecData.Count - 1 Begin strOutput += ELString.Format( "{0},", vecData.Items[Value1] ); End; Print( strOutput ); //---------------------------------------- // 3. 要素の追加(指定インデックスの前に繰り返し) //---------------------------------------- vecData.Insert( 5, 4, 1 ); strOutput = ""; For Value1 = 0 to vecData.Count - 1 Begin strOutput += ELString.Format( "{0},", vecData.Items[Value1] ); End; Print( strOutput ); //---------------------------------------- // 4. 要素の削除(最後から) //---------------------------------------- vecData.Pop_back(); vecData.Pop_back(); vecData.Pop_back(); vecData.Pop_back(); strOutput = ""; For Value1 = 0 to vecData.Count - 1 Begin strOutput += ELString.Format( "{0},", vecData.Items[Value1] ); End; Print( strOutput ); //---------------------------------------- // 5. 要素の削除(指定インデックスを) //---------------------------------------- vecData.Erase( 0 ); vecData.Erase( 2 ); strOutput = ""; For Value1 = 0 to vecData.Count - 1 Begin strOutput += ELString.Format( "{0},", vecData.Items[Value1] ); End; Print( strOutput ); //---------------------------------------- // 6. 要素の取得 //---------------------------------------- strOutput = ELString.Format( "{0},{1},{2},{3},", vecData.Front(), vecData.Back(), vecData.Items[2], vecData.at(1) ); Print( strOutput ); //---------------------------------------- // 7. 空判定 //---------------------------------------- strOutput = ELString.Format( "{0}", vecData.Empty() ); Print( strOutput ); vecData.Clear(); strOutput = ELString.Format( "{0}", vecData.Empty() ); Print( strOutput ); End; { ** Copyright © Trade Tech All Rights Reserved ** }
表示例
本クラスの使いどころ
標準EasyLanguageでもオブジェクト指向EasyLanguageでも活用できるクラスです。
複雑なプログラムになるほど、利用する頻度は高くなるでしょう。ぜひご活用ください。