問題タブ [boost]
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++ - boost::function を単純な関数ポインタに降格する
単純な関数ポインターを期待するメソッドに boost::bind を渡したい (同じ署名)。
boost::function の格納を回避して、バインドされたファンクターを直接渡すことができますが、同様のエラーが発生します。
c++ - 逆オフセットトークナイザー
トークン化する文字列があります。その形式はHHmmssff
、H
、m
、s
がf
数字です。
4 つの 2 桁の数字にトークン化されるはずですが、短縮形も受け入れる必要があるsff
ため、 と解釈され00000sff
ます。を使用したかったboost::tokenizer
のoffset_separator
ですが、正のオフセットでのみ機能するようで、逆方向に機能させたいと思います。
わかりました、1 つのアイデアは文字列の左から 0 をパディングすることですが、おそらくコミュニティは非常にスマートな何かを思いつきます。;)
編集: 追加の要件が登場しました。
よりスマートなソリューションの基本的な必要性はf
、ssff
、 、などのすべてのケースを処理することでしたが、その省略形のmssff
ように、より完全な時間表記も受け入れることでした。HH:mm:ss:ff
s:ff
s:
s:00
文字列が I で終わる場合は、:
明らかに 2 つのゼロを埋め込むこともできます。次に、数字だけを残してすべてのセパレータを取り除き、結果の文字列を精力的に解析します。
しかし、オフセット トークナイザーを文字列の末尾 (オフセット -2、-4、-6、-8) からさかのぼって、数値をレキシカルに s にキャストする方法があれば、少し簡単になるようint
です。
c++ - MSVC 用にビルド済みの Boost 1.37
Boost 1.37.0 用のビルド済みの MSVC++ ライブラリ セットが見つかりません。ソースのみです。彼らの奇妙なビルドシステムがどのように機能するのか理解できません...ビジュアルスタジオプロジェクトなどのダウンロードを見つけることができる場所はありますか?
c++ - ブーストasioでソケットをブロックする際にタイムアウトを設定するには?
保留中の操作を (切断せずに) キャンセルする方法、またはブースト ライブラリ関数のタイムアウトを設定する方法はありますか?
つまり、boost asio でソケットをブロックする際にタイムアウトを設定したいですか?
socket.read_some(boost::asio::buffer(pData, maxSize), error_);
例: ソケットからいくつか読み取りたいが、10 秒経過したらエラーを発生させたい。
c++ - ブーストasioでSO_RCVTIMEOおよびSO_SNDTIMEOソケットオプションを設定できますか?
ブーストasioでSO_RCVTIMEOおよびSO_SNDTIMEOソケットオプションを設定できますか?
もしそうなら、どのように?
代わりにタイマーを使用できることは知っていますが、特にこれらのソケットオプションについて知りたいです。
c++ - 削除は基本クラスへのポインタで機能しますか?
newによって返されたのと同じポインタを渡す必要がありますか、それともクラスの基本型の1つへのポインタを渡すことができますか?例えば:
もちろん、これは大幅に簡略化されています。私が本当にやりたいのは、boost :: shared_ptrでいっぱいのコンテナーを作成し、それをコードに渡して、終了時にコンテナーから削除することです。このコードは、BarまたはBaseの実装について何も知らず、shared_ptrデストラクタの暗黙の削除演算子に依存して正しいことを行います。
これはおそらく機能しますか?ポインタが同じアドレスを持たないので、私の直感はノーと言います。一方、dynamic_cast <Bar *>は機能するはずなので、コンパイラはそれを理解するのに十分な情報をどこかに格納しています。
助けてくれてありがとう、答えてコメントしてくれたみんな。私の例に示されているように、仮想デストラクタの重要性はすでに知っていました。答えを見た後、私はそれを少し考えました、そして仮想デストラクタの全体の理由がこの正確なシナリオであることに気づきました。したがって、それは機能しなければなりませんでした。ポインタを元に戻すための目に見える手段がないことに私は投げ込まれました。もう少し考えてみると、目に見えない手段があると私は信じました。そして、デストラクタが削除から解放への真のポインタを返していると理論付けました。Microsoft VC ++からコンパイルされたコードを調査すると、〜Baseでこの行を見たときに、私の疑いが確認されました。
アセンブラをトレースすると、これが削除関数に渡されているポインタであることがわかりました。謎が解けた。
I've fixed the example to add the virtual destructor to IFoo, it was a simple oversight. Thanks again to everyone who pointed it out.
c# - boost::signal を C# デリゲートにラップする
ネイティブ C++ で記述された、次のようなインターフェイスを持つ非同期ライブラリがあるとします。
C#でラップしたい。SWIG などを使用して、シグナルを C# デリゲートにバインドできる方法を知っている人はいますか?
c++ - 正気を失うことなくブーストを使用するコードをデバッグする方法は?
Boost は優れたライブラリ セットであり、生産性を大幅に向上させます。しかし、それを使用するコードのデバッグは完全な悪夢です。確かに、2 万個のヘッダー ファイルをステップ実行することは貴重な知的作業になる可能性がありますが、それを何度も繰り返す必要がある場合はどうすればよいでしょうか?
ブースト部分をスキップして、デバッガーをコードに直接移動させる開発者向けの方法はありますか?
Visual Studio には、.NET フレームワーク用のDebuggerStepThroughAttributeがあります。ネイティブ C++ に似たものはありますか?
c++ - Windowsでx64Boostライブラリをどのように構築しますか?
x86 Boostライブラリを何度もビルドしましたが、x64ライブラリをビルドできないようです。「VisualStudio2005x64 Cross Toolsコマンドプロンプト」を起動し、通常のビルドを実行します。
ただし、それでもx86 .libファイルが生成されます(これはdumpbin / headersで確認しました)。私は何が間違っているのですか?
c++ - 長方形内のポイントをすばやく取得できるように2Dポイントを保存します
2Dポイントがたくさんあるので、特定の長方形にあるポイントをすばやく取得したいと思います。「。」としましょう。は任意の点であり、「X」は、TopLeftとして「T」、BottomRight点として「B」を持つ長方形の内側で見つけたい点です。
セットの最初にTopLeftポイントをソートし、最後にBottomRightをソートするソートファンクターを使用してstd::setを試しました。最初にX値でソートすると、次のポイントが見つかります。
これは、見つかった各ポイントが実際に長方形の内側にあるかどうかを確認する必要があることを意味します。あまりよくありません。
これを行うためのより良い方法は何でしょうか?
私の言語はC++(Windows)で、STLとブーストを利用できます。
アップデート
これまでの回答を読んだ後、問題のすべてのパラメーターを考慮していないことに気付きました。固定された長方形が1つではありません。長方形は、実行時にユーザーが設定できます。これは、この更新の前にArteliusによって提案されたように、ポイントのセットをソートすることは、すべてのポイントを線形検索するよりも効率的であることが約束されていることを意味します。それでも試してみます!ユーザーが長方形を頻繁に設定することはないと思います。したがって、実装作業に関しては、それが私にとって良い解決策であることがわかるかもしれません。