2Dポイントがたくさんあるので、特定の長方形にあるポイントをすばやく取得したいと思います。「。」としましょう。は任意の点であり、「X」は、TopLeftとして「T」、BottomRight点として「B」を持つ長方形の内側で見つけたい点です。
. . . . . .
. T-----+ .
. | X X | .
. +-----B .
. . . . . .
セットの最初にTopLeftポイントをソートし、最後にBottomRightをソートするソートファンクターを使用してstd::setを試しました。最初にX値でソートすると、次のポイントが見つかります。
. . . . . .
. T-----+ .
X | X X | X
. +-----B .
. . . . . .
これは、見つかった各ポイントが実際に長方形の内側にあるかどうかを確認する必要があることを意味します。あまりよくありません。
これを行うためのより良い方法は何でしょうか?
私の言語はC++(Windows)で、STLとブーストを利用できます。
アップデート
これまでの回答を読んだ後、問題のすべてのパラメーターを考慮していないことに気付きました。固定された長方形が1つではありません。長方形は、実行時にユーザーが設定できます。これは、この更新の前にArteliusによって提案されたように、ポイントのセットをソートすることは、すべてのポイントを線形検索するよりも効率的であることが約束されていることを意味します。それでも試してみます!ユーザーが長方形を頻繁に設定することはないと思います。したがって、実装作業に関しては、それが私にとって良い解決策であることがわかるかもしれません。