問題タブ [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.

0 投票する
3 に答える
8407 参照

c++ - Boostinterval_mapでこれを行うことはできますか?

私がやりたいのは、インターバルを効率的に処理することです。たとえば、私の例では、間隔は次のようになります。

[10, 20], [15, 25], [40, 100], [5, 14]

間隔は閉じて整数であり、一部の間隔は省略されている場合があります。特定のクエリの重複する間隔を効率的に見つけたい。たとえば、[16, 22]が与えられた場合:

[10, 20], [15, 25]

上記の間隔は、過大な間隔として計算する必要があります。

私は現在、赤黒木に基づいた区間木を書いています(参照:CLRS、アルゴリズムの概要)。重複するすべての間隔を見つけることはO(n)ですが、実行時間はより速くなるはずです。間隔は削除および挿入できることに注意してください。


interval_mapただし、Boostには次のものがあることがわかりましたinterval_sethttp ://www.boost.org/doc/libs/1_46_1/libs/icl/doc/html/index.html

試してみましたが、動作がおかしいです。たとえば、[2, 7]が最初に[3, 8]挿入されてから挿入された場合、結果のマップには、、、[2, 3)および[3, 7]が含まれ(7, 8]ます。つまり、新しい間隔が挿入されると、分割が自動的に行われます。

この機能をオフにできますか?または、Boostinterval_mapは私の目的に適していますか?

0 投票する
1 に答える
194 参照

c++ - リクエストするサービスを選択する場合、for_eachの代わりにBoost ICLを使用することは可能であり、合理的ですか?

私はその中にrequest構造を持っstd::vector<std::string> argumentsています。ここstd::map<std::string, std::vector<std::string> > servicesで、キーはサービス名であり、値はサービスが応答する引数のベクトルです。異なるサービスの引数が重複する場合があります(Nサービスの引数が同じまたは部分的に同じ場合があります)。与えられたリクエストに対応するすべてのサービスを見つける必要があります。サービスの選択に使用する現在のfor_eachの代わりにBoostICLを使用する方が(コードの使いやすさや読み取りと要求の選択速度から)良いのではないかと思います(各サービスを繰り返し処理して、その引数のいずれかがリクエストで提示)?

0 投票する
2 に答える
684 参照

c++ - boost::icl::interval_map で間隔の数を取得する方法はありますか?

boost::icl::interval_map で間隔の数を取得する組み込みの方法はありますか? 私はドキュメントでそれを見つけることができません。メソッドsize()には別の目的があるようです。

0 投票する
1 に答える
177 参照

boost - boost interval_map に値のリストを格納することは可能ですか?

私は次のようなコードを持っています:

これはうまくいきます。

しかし、上記のコードで「セット」を「リスト」に変更すると、ブーストが文句を言います。

値としてサポートされるのは「セット」だけですか?

ありがとう!

0 投票する
1 に答える
376 参照

c++ - Boost ICL が期待どおりに機能しない、std::set operator+= が期待される

Boost (1.51) ICL を使用して、インターバル検索を簡素化しようとしています。

種類:

  • SequenceI::shp_set は共有ポインタの std::set です
  • types::mz_t は Boost::Units 量です

interval_map<types::mz_t, SequenceI::shp_set>間隔マップの typedef です

適切なセグメントを作成する関数があり、それを実行しようとしています

次に、コンパイル中に次のエラーが発生します。

"Party" コードを見ると、動作させるために特別なことは何も行われていません。

私の望みは、値を与える間隔マップを持つことであり、提供された値を含む間隔を持つ共有ポインターのリスト (またはイテレーター、私は気にしません) を提供します。それでおしまい。

ICL でこれができない場合は、別のインターバル マップ ライブラリである pronto を見つける必要があります。

0 投票する
1 に答える
1167 参照

c++ - boost icl interval_map interval_set templates


I've started work with boost:icl library which is really comprehensive and convenient. I'm using mostly two types of intervals from boost, boost::icl::interval_set and boost::icl::interval_map. Some times I have to manipulate with just interval part of both types, and I don't interesting in doing replicate functions.

So here is my example:

getFirst() is a helper function when it is a map then it returns .first when it is a set then just an iterator.

So this example works like expected. What I want to improve is getFirst() function and I don't want hardcode types of domain and codomain in interval_map/set. I've tried something like this:

Then I changed:

but it does not work and compiler gives an error:

So question is, is it possible in this example do not hardcode domain and codomain types in getFirst() function?

Thanks, Andrey

0 投票する
1 に答える
406 参照

c++ - C++ Boost 間隔コンテナー ライブラリ (ICL) を使用するときに間隔をシフトする方法は?

Boost interval コンテナー ライブラリを使用して Discrete_interval をシフトするにはどうすればよいですか?

つまり、間隔の lower() と間隔の upper() から整数 c を減算したいですか? 明らかに、新しい間隔を作成できますが、これを行う標準的な方法を探しています。

0 投票する
1 に答える
227 参照

c++ - stl::set の stl::map の効率

問題を解決するために boost::icl::interval_map を使用したいと思います (ここで説明します。 interval_maps が最終的に機能する場合は、完全な回答を投稿します。)

を使用したいのですinterval_map<unsigned long long, set<foo*>>が、boost::icl のドキュメントには、潜在的な効率の問題があると記載されています (以下の から)。

教訓的な利点があるため、一連の文字列の間隔マップを使用して interval_maps を導入しています。パーティの例は、インターバル マップとオーバーラップの集計の基本的な考え方にすぐにアクセスできるようにするために使用されます。実際のアプリケーションでは、セットの interval_map は必ずしも推奨されません。std::set の std::map と同じ効率の問題があります。関連する値の数値およびその他の効率的なデータ型で interval_maps を使用することには大きな領域があります。

std::set の std::map の効率の問題は何ですか? どうすればそれらを回避できますか ?

0 投票する
1 に答える
547 参照

c++ - 時間間隔に関する C++ 演算

私はすでにこのための(醜い)コードを持っていますが、とにかく尋ねます:

平日は [09:15, 10:00), [21:10, 21:45) の時間間隔があります。指定された時間tと秒数が間隔内にあるs場合、日付と時刻を計算する必要があります。tt - s

  • 例: t = 20130913 21:15、s = 600、t - s は 20130913 09:55 になります。
  • 例: t = 20130923 09:16、s = 120、t - s は 20130920 21:44 になります。

これを C++ できれいに行う方法はありますか (boost::icl? boost::date_time?)

私はboost::iclを試しました。確かに時間範囲を保持しinterval_set<Time>、特定の間隔を見つけることができますTimeが、t - s時点が間隔範囲に入らない場合、最も近い間隔を見つける方法がわかりませんその時点の前に、1 日または週末全体に戻る必要があるかどうかを検出する方法。