問題タブ [boost-icl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ブースト interval_map には operator [] または .at() メソッドがありますか?
BOOST ライブラリのinterval_mapを使用しています。
私は集団でこれを持っているとしましょう
今、私はいくつかの番号にマッピングされているものを見つけたいと思っています:私は次のようなものを期待します:
また
しかし、私はそのような方法を見つけていないようです。
別の間隔マップを「ウィンドウ」として定義し、交差を行う必要は本当にありますか? 何かのようなもの:
c++ - Boost ICL における関数「contains」の基本的な使用法: 間隔タイプと関数のいくつかの組み合わせは実装されていませんか?
Boost ICL を使い始めて、非常に基本的なものに出くわしました。たとえば、関数contains
は、指定された要素が間隔内にあるかどうかに応じて、true または false を返す必要があります。ただし、これは機能しますが、機能し[right,left]_open_intervals
ません[open,closed]_inteval
(以下の例を参照)。
これは見落としというにはあまりにも明白なようです。意図した方法でライブラリを使用していますか?
例 (gcc 4.8 または clang 3.3 と Boost 1.54 を使用):
注: 上記は「静的」間隔と呼ばれます (バインドされたプロパティが型の一部であるため)。動的間隔は期待どおりに機能します。
c++ - 間隔で値を置き換える ICL マップをブーストしますか?
Boost.ICLには、 とのinterval_map
2 種類の動作が+=
ありinsert
ます。どちらも異なるコンテキストで役立ちます。1 つ目は、既存の 2 つの間隔の共通部分の値を合計します。2 つ目は、以前に割り当てられていない間隔でのみ新しい値を導入するだけです(以前に割り当てられた間隔では値が保持されます)。
(1.,2.)->1 , (2.5,3.)->3, (3.,5.)->2
ただし、以下の例では、望ましくない間隔マップを取得する代わりに、目的の を取得するなど、微妙に異なる動作が必要(1.,2.)->1 , (2.5,5.)->3
です。
つまり、新しく挿入された値が古い値を置き換えるということですか? その置換動作interval_map
を取得するにはどうすれば宣言できますか?
おまけ:それはboost::icl::map
すべきことですか?どうやって使うの?
編集 1:これは、C++11 を使用したより明示的で単純化されたサンプル コードです。
編集 2: @JorgeBellon の回答に基づく完全なソリューション:
c++ - ブーストICL、インターバルセットのカーディナリティ
Boost ICL では、間隔セットで cardinality() または size() 関数を呼び出すと、戻り値の型は間隔の型に関係なく size_t になります。32 ビット マシンでは、これは 32 ビットの符号なし整数です。ただし、間隔が int64_t 型の場合、カーディナリティは 32 ビット整数を簡単にオーバーフローさせる可能性があります。ここで明らかな何かが欠けていますか、それともこのライブラリの重大な欠陥ですか?
編集:例が追加されました
次のコードは、64 ビットではエラーなしでコンパイルおよび実行されますが、アサーションをスローする 32 ビット マシンではエラーが発生しません。
編集: Ubuntu 13.10 で boost::icl バージョン 1.49.0 を使用しています
編集:
次のコードは 64 ビットでも動作しないため、これは特に 32/64 ビットの問題ではありません。
c++ - N Boost interval_set の組み合わせ
4 つの異なる場所で停止しているサービスがあります。各ロケーションの停止を Boost ICL interval_set にモデル化しています。少なくとも N か所でアクティブな停止がいつ発生するかを知りたいです。
したがって、この回答に従って、組み合わせアルゴリズムを実装したので、 interval_set 交差点を介して要素間の組み合わせを作成できます。
このプロセスが終了したら、特定の数の interval_set が必要で、それぞれが同時に N か所の停止を定義します。最終ステップは、それらを結合して目的の全体像を取得することです。
問題は、現在コードをデバッグしていて、各交差点を印刷する時間になると、出力テキストがおかしくなり (gdb を使用して段階的にデバッグしている場合でも)、それらが表示されないことです。その結果、多くの CPU 使用率が発生します。
どういうわけか、必要以上に多くのメモリを出力するために送信していると思いますが、どこに問題があるのか わかりません。
これは SSCCE です。
何か助けはありますか?
c++ - ブースト interval_map と split_interval_map
interval_map と split_interval_map を理解するのに苦労しています。両方を実装しましたが、結果は同じです。以下は、分割間隔マップのコードです。
出力は次のとおりです。
同様に、上記のコードでは、split_interval_map を interval_map に変更し、出力は同じでした。私が欠けているものはありますか?
c++ - ブースト ICL 間隔の開放性を判断する方法は?
Boost.ICL で、間隔が閉じているか開いているかを判断する標準的な方法は何ですか?
現在、私はこれをやっています:
しかし、それはエレガントではないようです。
それを判断する機能はありますか?(動的に制限された間隔の場合)
また、それはうまくいきcontinuous_interval
ますか?最後に、静的な有界間隔 (コンパイル タイプ定義の境界) からコンパイル タイプを決定する関数 (テンプレート値など) はありますか?