void ReverseEnumerateAll(CList& list)
{
CObject* node = list.GetLastNode();
for(int i = list.Total()-1; node != NULL; i--, node = node.Prev())
printf("Element at " + (string)i);
}
Как работает этот код? На самом деле все просто. В функции EnumerateAll() в самом начале мы получаем ссылку на первый узел. Затем в цикле for мы печатаем порядковый узел этого узла
и переходим к следующему узлу командой node = node.Next(), не забывая при этом проитерировать текущий индекс элемента на единицу (i++). Перебор продолжается до тех пор, пока текущий
узел node не станет равен NULL, за это ответствен код во втором блоке for: node != NULL.
Аналогично работает реверсивная версия этой функции ReverseEnumerateAll() с той лишь разницей, что она вначале получает последний элемент списка CObject* node = list.GetLastNode().
В цикле for она получает не следующий, а предыдущий элемент списка node = node.Prev().
どうやら継承という意味ではなく、構造体の上にクラスからラッパーをかぶせたということでしょうか?
なぜ符号のビットが切れているのですか?
なぜ符号のビットが切れているのですか?
ハッシュは配列のインデックスとして働くので,正数でなければなりません。
ハッシュは配列のインデックスとして働くので,正数でなければなりません。
uint?
uint?
意味がない
意味がない
ハイライトされた行の組み合わせがおかしい
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
汎用クラスライブラリ - バグ、説明、問題、使用例、提案
fxsaber さん 2018.06.11 20:04
トリミングしたハッシュとカットしていないハッシュの比較は?
トリミングしたハッシュとカットしていないハッシュの比較は?
どれも切り捨てられていると思うのですが、最初に言っておきますが、私はコードをざっと見ただけで、しかもかなり前に見たので、間違っている可能性があります。
項目を追加するコードを見てください。
全部トリミングされていると思うのですが、はっきり言って、ずいぶん前にコードをチラッと見ただけなので、間違っているかもしれませんね。
項目を追加するコードを見てください。
はい、ありがとうございます。ただ、コードでトリミングされていないものはないんです。HashCodeメソッド自体でトリミングをしないのは変ですね。どうやらフールプルーフ(曲がったカスタムハッシュ)のための計算だったようです。
既出だったらごめんなさい。ドキュメントに記載がなかった。
Set-upsのループはありますか? iteratorはありますか?
既出だったらごめんなさい。ドキュメントに記載がなかった。
セットアップのループはありますか?
残念ながら、そうではありません。
でも、自分で実装することは可能です。
例えば、MQL5 RECEIPTS - REALIZE ASSOCIATED MASSIVE OR WORLD DATABASE FOR FAST DATA ACCESSの 記事中の例をご覧ください。