汎用クラスライブラリ - バグ、説明、質問、使用上の特徴、提案 - ページ 24 1...171819202122232425262728293031...38 新しいコメント Vasiliy Sokolov 2018.11.22 11:11 #231 fxsaber:キーから値を取得することについての質問です。ライブラリのコードでは、このメソッドは次のようになります。 //+------------------------------------------------------------------+ //| Find index of entry with specified key. | //+------------------------------------------------------------------+ template<typename TKey,typename TValue> int CHashMap::FindEntry(TKey key) { if(m_capacity!=NULL) { //--- get hash code from key int hash_code=m_comparer.HashCode(key)&0x7FFFFFFF; //--- search pair with specified key for(int i=m_buckets[hash_code%m_capacity]; i>=0; i=m_entries[i].next) if(m_entries[i].hash_code==hash_code && m_comparer.Equals(m_entries[i].key,key)) return(i); } return(-1); }はい、このコードはforのiが非標準的に再割り当てされているため、誤解を招く可能性があります。 i=m_buckets[hash_code%m_capacity];(すなわち、サブ配列または値ビンのi番目のインデックス)。 次に、同じforで、binのインデックスをbinのアイテムのインデックスに変える:i=m_entries[i].next なぜなら、典型的なケースでは、各副配列は平均して 1つの項目を持ち、ループは平均して1回だけ実行されるからです。 fxsaber 2018.11.22 11:20 #232 Vasiliy Sokolov:はい、このコードはforのiが非標準的に再割り当てされているため、誤解を招く可能性があります。 i=m_buckets[hash_code%m_capacity];(すなわち、サブアレイまたは値のバスケットのiインデックス)。 次に、同じforで、binのインデックスをbinのアイテムのインデックスに変える:i=m_entries[i].next 実際、このコードは正しく書かれています。なぜなら、典型的なケースでは、それぞれの部分配列は平均して 1つの項目を含み、ループは平均して一度だけ実行されるからです。ループは衝突のために作られている:ミニリストを通過するためと理解しています。 Vasiliy Sokolov 2018.11.22 11:22 #233 fxsaber:ループは衝突のために作られたもので、ミニリストを通過するためと受け止めています。はい、まったくその通りです。 pavlick_ 2019.01.25 07:13 #234 カスタムタイプの格納にテンプレートライブラリ(CArrayList)を使用。印象はあまりよくありません。便利なように、マクロを書きました #define CLEANUP do { \ for(int i_cln = 0; i_cln < segs.Count(); ++ i_cln) { \ Wave_end *cln_el; \ if( segs.TryGetValue(i_cln, cln_el) ) \ delete cln_el; \ }}while(false) #define SSEG(IND) do { \ if( ! segs.TryGetValue(IND, we) ) { \ CLEANUP; \ continue; \ }}while(false) TryGetValueの過度な誤魔化しと、クラスを値で渡すことができないため、使い勝手が悪い。 Vladimir Karputov 2019.03.10 11:39 #235 このトピックに関係のないコメントは、「MQL5 MT5 MetaTrader5初心者からの質問」に移動しました。 Andrey Pogoreltsev 2019.04.03 07:46 #236 教えてください、何か理解できていないかもしれませんが、このタイプの構造を使おうとすると。 #include <Generic\\ArrayList.mqh> struct Option { string name; color clr; }; ... CArrayList<Option> _options; エラーが発生するのですが。 'Option' - オブジェクトは参照渡しのみ ICollection.mqh 14 18 そして、エラーの積み重ねが...。 Sergey Eremin 2019.04.03 08:25 #237 Andrey Pogoreltsev:教えてください、何か理解できていないかもしれませんが、このタイプの構造を使おうとすると。 エラーが発生するのですが。 'Option' - オブジェクトは参照渡しのみ ICollection.mqh 14 18 で、次にエラーがいっぱい...。こんな風に試してみてください。 #include <Generic\\ArrayList.mqh> class Option { string name; color clr; }; ... CArrayList<Option*> _options; Andrey Pogoreltsev 2019.04.03 08:50 #238 Sergey Eremin:この方法で試してみてください。 コレクションへのポインタの受け渡し/保存は、概念的に間違っています。 TheXpert 2019.04.03 08:53 #239 Andrey Pogoreltsev:コレクションへのポインタの受け渡し/保存は、概念的に間違っています。MQLのジェネリックには、ほんのわずかでも適したものがないのです。 Andrey Pogoreltsev 2019.04.03 08:55 #240 TheXpert:MQLのジェネリックで少しでも適切なものはありません。まあ、そうですね、配列を使ったことがあります。組み込み型にしか適さないのに、なぜコレクションを作り、kodobaseに入れるのでしょうか?) 1...171819202122232425262728293031...38 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
キーから値を取得することについての質問です。ライブラリのコードでは、このメソッドは次のようになります。
はい、このコードはforのiが非標準的に再割り当てされているため、誤解を招く可能性があります。
i=m_buckets[hash_code%m_capacity];(すなわち、サブ配列または値ビンのi番目のインデックス)。
次に、同じforで、binのインデックスをbinのアイテムのインデックスに変える:i=m_entries[i].next
なぜなら、典型的なケースでは、各副配列は平均して 1つの項目を持ち、ループは平均して1回だけ実行されるからです。
はい、このコードはforのiが非標準的に再割り当てされているため、誤解を招く可能性があります。
i=m_buckets[hash_code%m_capacity];(すなわち、サブアレイまたは値のバスケットのiインデックス)。
次に、同じforで、binのインデックスをbinのアイテムのインデックスに変える:i=m_entries[i].next
実際、このコードは正しく書かれています。なぜなら、典型的なケースでは、それぞれの部分配列は平均して 1つの項目を含み、ループは平均して一度だけ実行されるからです。
ループは衝突のために作られている:ミニリストを通過するためと理解しています。
ループは衝突のために作られたもので、ミニリストを通過するためと受け止めています。
はい、まったくその通りです。
カスタムタイプの格納にテンプレートライブラリ(CArrayList)を使用。印象はあまりよくありません。便利なように、マクロを書きました
TryGetValueの過度な誤魔化しと、クラスを値で渡すことができないため、使い勝手が悪い。
教えてください、何か理解できていないかもしれませんが、このタイプの構造を使おうとすると。
エラーが発生するのですが。
'Option' - オブジェクトは参照渡しのみ ICollection.mqh 14 18
そして、エラーの積み重ねが...。教えてください、何か理解できていないかもしれませんが、このタイプの構造を使おうとすると。
エラーが発生するのですが。
'Option' - オブジェクトは参照渡しのみ ICollection.mqh 14 18
で、次にエラーがいっぱい...。こんな風に試してみてください。
この方法で試してみてください。
コレクションへのポインタの受け渡し/保存は、概念的に間違っています。
コレクションへのポインタの受け渡し/保存は、概念的に間違っています。
MQLのジェネリックには、ほんのわずかでも適したものがないのです。
MQLのジェネリックで少しでも適切なものはありません。
まあ、そうですね、配列を使ったことがあります。組み込み型にしか適さないのに、なぜコレクションを作り、kodobaseに入れるのでしょうか?)