タグ付けされた質問 「boost」

Boostは、C ++での使用を目的とした高品質のライブラリの大規模なコレクションです。Boostは無料で、多くの場合「第2標準ライブラリ」と見なされています。


11
C ++ Boostライブラリを使用する利点は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 だから、私はずっと読んでいて、Boostライブラリーは実際に(私の店ではなく)多く使われているようです。どうしてこれなの?そして、何がそんなに素晴らしいのですか?
122 c++  boost 


6
shared_mutexのブーストの例(複数の読み取り/ 1つの書き込み)?
いくつかのデータを頻繁に読み取らなければならないマルチスレッドアプリがあり、そのデータが更新されることもあります。現在、ミューテックスはそのデータへのアクセスを安全に保ちますが、複数のスレッドが同時に読み取れるようにし、更新が必要な場合にのみロックアウトする必要があるため、コストがかかります(更新スレッドは他のスレッドが完了するのを待つことができます) 。 これはboost::shared_mutex本来あるべきことだと思いますが、使い方がよく分からず、具体的な例もわかりません。 開始するために使用できる簡単な例はありますか?

2
boost :: algorithm :: joinの良い例
私は最近boost :: algorithm :: joinを使用したかったのですが、使用例を見つけることができず、この1つの関数を使用するためだけにBoost Rangeライブラリの学習に多くの時間を費やしたくありませんでした。 文字列のコンテナで結合を使用する方法の良い例を誰かが提供できますか?ありがとう。
116 c++  string  boost  join 

25
ブーストの最もよく使われる部品[終了]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 発見したとき、boost::lexical_cast「なぜこれをもっと早く知らなかったのだろう」と思いました。-私は次のようなコードを書かなければならないのが嫌だった stringstream ss; ss << anIntVal; mystring = ss.str(); 今私は書く mystring = boost::lexical_cast<string>(anIntVal); 昨日、stackoverflowでブーストスプリットに遭遇しました(コードを書く手間を省く別の宝石)。 string stringtobesplit = "AA/BB-CC") vector<string> tokens; boost::split(tokens, stringtobesplit, boost::is_any_of("/-")); // tokens now holds 3 items: AA BB CC 定期的に使用できる他の機能を探すために、Boostのドキュメントを調べ始めますが、見落としが非常に簡単になると思います。 どのブースト機能を最もよく使用していますか?
115 c++  boost 

17
C ++-std :: shared_ptrまたはboost :: shared_ptrに参照を渡す
で動作する必要がある関数がある場合shared_ptr、(shared_ptrオブジェクトのコピーを避けるために)関数への参照を渡す方が効率的ではないでしょうか?考えられる悪い副作用は何ですか?私は次の2つのケースを想定しています。 1)関数内では、次のように引数のコピーが作成されます ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)関数内では、引数は次のようにのみ使用されます Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } どちらの場合も、参照ではなくboost::shared_ptr<foo>by値を渡す正当な理由がわかりません。値による受け渡しは、コピーのために「一時的に」参照カウントをインクリメントし、関数スコープを終了するときにそれをデクリメントします。私は何かを見落としているか? 明確にするために、いくつかの回答を読んだ後、私は時期尚早の最適化の懸念に完全に同意します。私の質問は、純粋に技術的なコードの観点からのものでした。

4
`const shared_ptr <T>`と `shared_ptr <const T>`の違いは何ですか?
次のようなC ++の共有ポインターのアクセサーメソッドを書いています。 class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } したがってgetBar()、戻り値の型のconst-nessをサポートするためにboost::shared_ptrは、Barそれが指す変更を防ぐ必要があります。私の推測では、それshared_ptr&lt;const Bar&gt;は私が戻りたいタイプですconst shared_ptr&lt;Bar&gt;が、ポインタ自体が別のものを指すように再割り当てすることはできませんが、それが指すBarものの変更は許可さBarれます...しかし、私にはわかりません。確実に知っている人がこれを確認するか、間違った場合は修正していただければ幸いです。ありがとう!
115 c++  boost  const  shared-ptr 

23
実行可能ファイルのパスを取得する
この質問が以前に尋ねられたことは知っていますが、満足のいく答え、または「いいえ、これを行うことはできません」という決定的な回答がまだないので、もう一度尋ねます。 私がやりたいのは、現在実行中の実行可能ファイルへのパスを、絶対パスとして、または実行可能ファイルの呼び出し元からの相対パスとして、プラットフォームに依存しない方法で取得することだけです。私はboost :: filesystem :: initial_pathが私の問題の答えでしたが、それは質問の「プラットフォームに依存しない」部分のみを処理するようです-それでもアプリケーションが呼び出されたパスを返します。 ちょっとした背景として、これはOgreを使用したゲームで、Very Sleepyを使用してプロファイリングしようとしています。これは、独自のディレクトリからターゲットの実行可能ファイルを実行するため、ロード時にゲームが構成ファイルなどを検出せず、すぐにクラッシュします。構成ファイルへの絶対パスを渡せるようにしたいのですが、実行可能ファイルと一緒に常に存在することがわかっています。Visual Studioでのデバッグについても同様です。作業ディレクトリを設定せずに$(TargetPath)を実行できるようにしたいと思います。
114 c++  boost  executable 

6
CMakeを使用してC ++プログラムをBoostにリンクする方法
UbuntuでプログラムをBoostライブラリにリンクするには、CMakeファイルはどのように見えるべきですか? 実行中に表示されるエラーmake: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' メインファイルは本当にシンプルです: #include &lt;boost/program_options/options_description.hpp&gt; #include &lt;boost/program_options/option.hpp&gt; using namespace std; #include &lt;iostream&gt; namespace po = boost::program_options; int main(int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ; return 0; } 私はなんとかやってきた。CMakeファイルに追加した唯一の行は次のとおりです。 target_link_libraries( my_target_file ${Boost_PROGRAM_OPTIONS_LIBRARY} )
109 c++  boost  cmake 

9
コンパイル時のboost :: system :: system_category()への未定義の参照
Boostライブラリを使用するUbuntu 11.10でプログラムをコンパイルしようとしています。Ubuntuリポジトリから1.46-dev Boostライブラリをインストールしましたが、プログラムをコンパイルするとエラーが発生します。 undefined reference to boost::system::system_category() 私が間違ったことは何ですか?
105 c++  boost 

4
shared_ptrはどこにありますか?
shared_ptrがどこにあるのかを数時間探した後、私は今とてもイライラしています。私が目にする例はどれも、ヘッダーを含むshared_ptr(そして機能する)完全なコードを示していません。単に述べるだけstdでtr1、&lt;memory&gt;まったく役に立たない!ブーストをダウンロードしましたが、それでも表示されません!誰かがそれを見つける場所を正確に教えてくれますか? 欲求不満を解消させてくれてありがとう! 編集:タイトルが変更されたようです。申し訳ありません。つまり... shared_ptrが「C ++バージョンに依存する」ことは私には明確ではなかったためでもありました-&gt;私が環境について述べなかった理由-&gt;したがって、おそらく私がそれを見つけることが非常に困難であった理由。 MSVS2008に取り組んでいます。 編集2:理由はわかりませんが、[memory]と[boost / tr1 / memory.hpp]と[boost / tr1 / tr1 / memory]を含めて、どこからでもshared_ptrを探していました。もちろん、できませんでしたない すべての応答をありがとう。

2
boost :: flat_mapと、mapおよびunordered_mapと比較した場合のパフォーマンス
キャッシュヒットにより、メモリの局所性によってパフォーマンスが大幅に向上することは、プログラミングの常識です。私は最近知りましたboost::flat_map、地図のベクターベースの実装がどれであるを。それはあなたの典型的なものほど人気が​​ないようですmap/ unordered_mapそれで私はパフォーマンスの比較を見つけることができませんでした。それはどのように比較され、そのための最良のユースケースは何ですか? ありがとう!
103 c++  boost  map 

3
shared_ptr <Base>をshared_ptr <Derived>にダウンキャストしますか?
更新:この例のshared_ptrはBoostのものと似ていますが、それはshared_polymorphic_downcast(またはそのことについてはdynamic_pointer_castまたはstatic_pointer_cast)をサポートしていません! 参照カウントを失うことなく、派生クラスへの共有ポインターを初期化しようとしています: struct Base { }; struct Derived : public Base { }; shared_ptr&lt;Base&gt; base(new Base()); shared_ptr&lt;Derived&gt; derived; // error: invalid conversion from 'Base* const' to 'Derived*' derived = base; ここまでは順調ですね。C ++が暗黙的にBase *をDerived *に変換することを期待していませんでした。ただし、私はコードによって表現される機能が必要です(つまり、ベースポインターをダウンキャストしながら参照カウントを維持します)。私の最初の考えは、Baseにキャスト演算子を提供して、Derivedへの暗黙の変換が行われるようにすることでした(ペダントの場合:ダウンキャストが有効であることを確認しますので、心配しないでください)。 struct Base { operator Derived* (); } // ... Base::operator Derived* () { return down_cast&lt;Derived*&gt;(this); } …
102 c++  gcc  boost 

7
加重乱数
加重乱数を実装しようとしています。私は現在、壁に頭をぶつけているだけで、これを理解することはできません。 私のプロジェクト(ホールデムハンドレンジ、主観的なオールインエクイティ分析)では、Boostのランダム関数を使用しています。それで、1と3の間の乱数(つまり、1、2、または3)を選びたいとしましょう。Boostのメルセンヌツイスタージェネレーターは、これの魅力のように機能します。ただし、たとえば次のようにピックに重みを付けたいです。 1 (weight: 90) 2 (weight: 56) 3 (weight: 4) Boostにはこのための機能がありますか?
101 c++  boost  random 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.