後から要素を追加できるVectorクラスのサンプルコード

後から要素を追加/削除できるコレクション型クラスです。

概要

配列(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でも活用できるクラスです。

複雑なプログラムになるほど、利用する頻度は高くなるでしょう。ぜひご活用ください。

クラス一覧ページに戻る

「株式投資 x IT」の
オンラインコミュニティに参加しませんか?

2019年5月頃から、トレステやEasyLanguageを中心とした株式投資に役立つ最新ツールやITスキルに関する情報が手に入るオンラインコミュニティを運営しています。

トレステやEasyLanguageの豊富な小ネタやサンプルコードが手に入り
チャットツール(Slack)でいつでもトレステやEasyLanguageの質問ができ
毎月開催している勉強会の収録動画がすべて視聴できて
トレステ以外にも株式投資に役立つ最新のツールやITスキルを学べる

オンライン動画講座
時系列分析用サンプルプログラム
OOELサンプルプログラム
Slackでいつでも質問可能

このように、「コンテンツ見放題」「チャット交流」という構成で、僕がが運営しているコミュニティになります。

最近トレステやEasyLanguageを始めたという方から、経験豊富な投資家・プログラマーの方まで、様々な人が集う場となっております。興味のある方はぜひ、ご参加ください。

トレードテック・オンラインの詳細を見る