C++ - for ループで最後のインデックスを取得する方法

okwaves2024-01-25  7

私は mql5 として知られる C++ に似た言語でコーディングしています。(mt5 取引プラットフォーム用) 多くの類似点があります...以下に示すような for ループがあります。

void OnTick()  // this functon basically executes the code after every price change.
{
   for (int i = 0; i<5; i++)  //the for loop function
    {
     Print(i);  //this prints the loop
    }
}

時間の経過とともに価格が変化するたびに上記のコードを実行した結果は次のようになります。

13:27:18.706    0
13:27:18.706    1
13:27:18.706    2
13:27:18.706    3
13:27:18.706    4

13:27:18.900    0
13:27:18.900    1
13:27:18.900    2
13:27:18.900    3
13:27:18.900    4

質問は、for ループのインデックスの最後の要素にアクセスし、価格が変更されるたびに 4 番目のインデックスを出力するにはどうすればよいですか? mql5 は C++ に似ています。 C++ から引き継げるものはありますか?

13:27:18.706    4
13:27:18.900    4

ループのスコープ外では i にアクセスすることはできません。

– πάντα ῥεῖ

2020 年 9 月 3 日 10:37



------------------------

必要なのは、i をループの外に引き出すことだけです。

void OnTick()
{
   int i = 0;
   for (; i < 5; i++)
   {
     Print(i);
   }
   // i is now one past the last index
   int last = i - 1;
}

事前に 5 回ループすることがわかっている場合は、以下を使用して最後のインデックスを取得することもできます。

int last = 5 - 1;

0



------------------------

マジックナンバーは使用しないでください。 5 は魔法の数字です。 number_of_prices のような意味のある名前を付けます。

constexpr size_t number_of_prices = 5;

void OnTick()
{
    for (size_t i = 0; i < number_of_prices; ++i)  //the for loop function
    {
        Print(i);  //this prints the loop
    }
    Print(number_of_prices - 1); // access last price
}

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。