1 名前:デフォルトの名無しさん [2009/08/28(金) 16:53:36 ] 過去スレ part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/ part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
421 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:38:43 ] すみません、質問があるんですが 今現在uBLASライブラリを使ってLU分解を行っています しかし,同じ動作を数百回回してると下記のエラーが出てしまいます 毎回違うループ回数でエラーが起きているみたいなんですが,何故起こってしまうのかよくわかりません 分かる方いらっしゃいますか? *エラーメッセージ Check failed in file /cygdrive/D/boost_1_39_0/boost/numeric/ublas/lu.hpp at line 276: detail::expression_type_check (prod (triangular_adaptor<const_matrix_type, upper> (m), e), cv2) Error while dumping state (probably corrupted stack)
422 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:57:39 ] probably corrupted stack
423 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 21:59:52 ] よく分からんが、uBLASは1.40でlu.hppも含めてアップデートされているので 1.40で試してみたらどう
424 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:22:56 ] >>423 ありがとうございます とりあえず、アップデートして行ってみましたが状況変わらずでした LU分解の後退代入で配列の不正アクセスか,配列が破壊されてるかどちらかが起きてるのはわかるんですが 毎回違うタイミングで起きるので原因が良くわからないです 代入する値はループ毎に変わりますが乱数を使ってるわけではないのでエラーを吐き出すとしたら同じループ回数だとは思うんです
425 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 22:39:03 ] 取り敢えず、デバッグして発生条件を絞っていくしかないな
426 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 01:01:44 ] まさかとは思うがuBLAS最新はVC系はサポートされてないぞ。
427 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 01:06:07 ] ビタミンC?
428 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 05:00:13 ] >>421 もうエラーの内容も覚えていないんだけど uBLASつかってるシングルスレッドのプログラムを 問題を複数に分けてマルチスレッドで分散してやるようにしたらわけのわからないエラーが出始めた 納期があったから細かく調べずにマルチプロセスで逃げたw まったく参考にならんけど思い出した
429 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:17:37 ] 更新しました。 ttp://booster.x0.to/ 以下更新内容の一部 [Regex] Improve recursion branch-prediction. [Spirit] Spirit: comment typo fixes Spirit: minor test adjustment Added note to fix the thing Spirit: expanded the quick hack to include strings Spirit: added new Karma example Spirit: little endian binary test fix [Multi_index] handled serialization of non default constructible values [Selialization] Fix plugin test/demo
430 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 17:07:19 ] Webを検索していて驚きました。 ttp://webdocs.cs.ualberta.ca/~graphics/software/boost/boost/numeric/ublas/traits.hpp ここに boost::complex というテンプレートがあるのですが、これはなんでしょうか? 昔std::complexが標準にない時代にboostに同等のものがあったとか、 そういうことはありますか?
431 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 09:11:03 ] 初歩的な質問で恐縮なのですが… win2000+VisualStudio2005+Microsoft Platform SDK for Windows Server 2003 SP1で、 Boost1.41をダウンロードしてきてbootstrapとbjamを実行し、 www.boost.org/doc/libs/1_41_0/libs/filesystem/example/simple_ls.cpp を試しにコンパイルしてみたのですが、 LINK : fatal error LNK1104: ファイル 'libboost_filesystem-vc80-mt-gd-1_41.lib' を開くことができません。 というエラーが出ます。 指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、 これはコンパイラにパスが通ってないということでしょうか? 解決方法を知っている方がいましたら教えていただきたいです。 現在のVisualStudioの設定は以下のとおりです。 オプション→プロジェクトおよびソリューション→VC++ディレクトリ→インクルードファイルにC:\Boostを追加 ライブラリファイルにC:\Boost\bin.v2\libsを追加
432 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 10:08:41 ] ファイル名が微妙に違ったりしてないかい
433 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 11:58:11 ] >指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、 >(中略) >ライブラリファイルにC:\Boost\bin.v2\libsを追加 bin.v2 の下は未インストール状態のものなのでその下層のパスまでちゃんと指定するか、install して 一ヶ所にまとめられたディレクトリを指定するかどっちかだと思われ。
434 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 12:34:19 ] おいおい、bin.v2はビルド時の中間ファイル置き場だろ。 bjamのオプション次第だけど、普通はstage\libだろ。
435 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 16:39:47 ] 431です。 ライブラリファイルをC:\Boost\stage\libに変更したところ、コンパイルが通るようになりました。 回答してくださった方々、本当にありがとうございます。
436 名前:デフォルトの名無しさん [2010/01/03(日) 11:53:28 ] boostからMPICH2を使ってみようと思うんだが、 MPICH2(Win32 64bit)をインストールしても binフォルダにmpichコマンドやmpeコマンドが見当たらない。 そういうもの? ttp://www.kmonos.net/alang/boost/classes/mpi.html ここの手順そのままで問題ない?
437 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 18:56:13 ] >>436 俺はやったことないからわからんが、そのページに >MPICH2 では手元の環境ではうまく動かず…。 って書いてあるのに、そのままで問題ないかと言われても…。
438 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:41:42 ] >>436 MPIの使い方はよく分かりません。 Boost 1.41 + MPICH2で試してみましたが、ビルドまでは通るものの実行時に例外エラーが発生しますね。
439 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:58:53 ] 更新しました。Boost.MPIにつきましては、今後MPICH2以外の使用を検討致します。 ttp://booster.x0.to/ 以下更新内容の一部 [Fusion] associative forward iterators in example and docs [Random] Attempt to fix ranlux failures Try to get more information out of the failing tests. [Spirit] Spirit: fixing a problem in sequences if the attribute is a container of containers, more test cases Spirit: accounting for changed fusion::fold parameter sequence in new Boost version Spirit: fixed SA detection for karma::maxwidth [Iostreams] Don't throw if seeking the end of the restricted area of a file. Add dummy returns after calling throw_exception. [Type_traits] Fixes #3800. [Circular_buffer] circular_buffer: constant complexity of clear method and destructor [Asio] Windows needs the OVERLAPPED structure to be valid until both the initiating function call has returned and the completion packet has been delivered. Don't block signals while performing system calls, but instead restart the calls if they are interrupted. Add boost_ prefix to extern "C" thread entry point function. Refs #3809. Add a workaround for some broken Windows firewalls that make a socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1. [Functional] Rename namespace BOOST_HASH_DETECT_FLOAT_FUNCTIONS to lower case for consistency. [Uuid] optimized seed_rng optimized string_generator
440 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 12:51:23 ] はじめまして。Boost.MultiArray の設計について教えていただきたいのですが、 multi_array_ref や const_multi_array_ref は何のために設計されているのでしょうか? 参照では問題がある場合に使うことを想定しているのでしょうか?
441 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 16:41:32 ] 参照の参照を内部で回避してるんじゃないかとエスパー
442 名前:440 mailto:sage [2010/01/05(火) 19:07:57 ] >>441 どうもありがとうございます。やっぱりそうなんですかね。
443 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 19:28:58 ] 実装読まずに適当に推測すると 名前的にはauto_ptrに対するauto_ptr_refとかと同じ用途なんじゃない?
444 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 19:33:56 ] 用途的には、multi_array_refはトラディショナルな配列のポインタを渡してmulti_arrayとして扱うためのラッパー。
445 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:00:51 ] fucktoryパターンってなに?><
446 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:11:44 ] fucker
447 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:12:21 ] 子作りでインスタンスを増やすパターン
448 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 20:14:58 ] >>443 > 実装読まずに適当に推測すると > 名前的には 現実的にはこれができるのが一番いいよね。 むずかしいけどさ。 俺 名前づけのセンスないし。
449 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 22:48:22 ] 「画像を扱うライブラリが増える」と聞いて、bimapだと勘違いした人、正直に手を上げなさいノシ
450 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 23:52:48 ] Boost.SpiritはV2になって、 結局 何が良くなったのでしょうか? コンパイル速度は悪くなったと思いますが、 実行時速度とかでしょうか?
451 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 12:19:06 ] Spiritのソースのメンテ性(Spiritを使ったソースではない)が上がったんじゃなかったか。
452 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 12:43:56 ] SpiritとExpressiveってコア統合中とか聞いたけど、最近のでは実現してるの?
453 名前:デフォルトの名無しさん [2010/01/07(木) 13:08:45 ] shared_ptrで、別のshared_ptrに参照させる際に weak_ptrのlock関数経由(もしくはshared_from_this関数)と '=' での直接代入経由で参照カウントの挙動に変化がなかったけど これってどっちでもいいの? BoostはVer1_40_0です。
454 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 13:11:05 ] >>453 あたりまえじゃないか。 挙動が変わるはずだという理屈があるなら言ってみれ。
455 名前:デフォルトの名無しさん [2010/01/07(木) 13:21:25 ] 直接代入が参照のコピーか移動かの仕様が自分の中でちょっと疑問でして、 実行結果を見れば一目了然なんですが、 これですっきりしました、有難うございました。
456 名前:450 mailto:sage [2010/01/07(木) 20:11:07 ] >>451 ありがとうございます。 そうですか。 ・・・でもまだ正直v1よりバグが多いとかですかね?
457 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:42:56 ] Spiritは毎日のように更新されてるので、バグ多しっつーより未完成ってイメージが
458 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:45:32 ] >>457 そうなんですか。 まさかのこれ以上の機能拡充とかですかね。 ありがとうございます。
459 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 21:17:53 ] 更新しました。Boost.MPIのビルドにはMPICH 1.2.5を使用しましたが、>>436 のサンプルは上手く動作しません。 ttp://booster.x0.to/ 以下更新内容の一部 [Unordered] Formatting changes, mostly to fit within 80 characters. Also, some C casts converted to static_cast. [Spirit] Spirit: added concept checks for qi API functions, fixed qi::match functions, added basic_istream_iterator Spirit: added karma::auto_() Spirit: added missing top level include file Spirit: fix for one of the multi_pass policies Spirit: added more tests for Karma auto_ Spirit: adding the matches.hpp[] directive Spirit: adding tests for the matches[] directive [Asio] Include boost/limits.hpp rather than <limits>, to support older compilers. Refs #3743. Drop back to second_clock if microsec_clock is unavailable. Refs #3743. Use sockatmark if SIOCATMARK is not defined. Refs #3743. Disable iostreams-related functionality if BOOST_NO_IOSTREAMS is defined. Refs #3743. Apply fix for reported excessive CPU usage under Solaris. Refs #3670. Support platforms that don't define INET6_ADDRSTRLEN. Refs #3743. [Wave] Wave: updating copyrights, fixing issues introduced by latest changes to multi_pass. [Regex] Fix bug that effects recursive expressions combined with repeats. Speed up the code a little, and stop swapping stream buffers around in case that's the cause of some test failures. [Iostreams] More unreachable returns. This should only be a temporary workaround. 亦、libs_for_build_boost.rarも、bjam.exeをrev.58785にアップデート致しました。
460 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 22:08:02 ] と、改めてMPICH2の使い方を調べてテストし直してみましたところ、 x32, x64双方共正常に動作しました。 管理者権限でコマンドプロンプトを起動して、 smpd -install mpiexec -n 8 test.exe です。 Boost.MPIは次回のビルドからまたMPICH2仕様に戻します。
461 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 22:18:17 ] あ、mpiexecよりGUIであるwmpiexecから起動した方が簡単ですね。
462 名前:440 mailto:sage [2010/01/09(土) 14:59:43 ] >>444 なるほど!仕様を読んでみると確かにそういう風に使えるんですね、というか書いてありますね…見落としてました…すみません。
463 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:03:30 ] boost::lexical_cast<int>("0x12345");のように、0xがついている文字列が 変換できないのですが、うまく変更できるようにするにはどうすればいいでしょうか?
464 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:34:08 ] lexical_castは誰もが待ち望んでいて、そしてガッカリした代物だよな・・・
465 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:34:14 ] 差し替え更新しました。Boost.MPIはMPICH2 1.2.1仕様に戻しました。 ttp://booster.x0.to/ 以下追加更新内容 [Spirit] Spirit: fixing attribute handling in sequences [regex] Change name of extern "C" function so it's prefixed with "boost_" >>463 lexical_castは16進数の変換には対応しておりませんので、この辺りは如何でしょう。 文字列を数値に変換する関数 (CRT) ttp://msdn.microsoft.com/ja-jp/library/53b7b72e(VS.80).aspx
466 名前: [―{}@{}@{}-] 463 mailto:sage [2010/01/09(土) 17:41:23 ] >>464 >>465 ありがとうございます. lexical_cast は過去に 1e+8 のような形式を変換できずがっかりした記憶が あるのですが、いつの間にかできるようになってて驚きもしました. 0x にもいつか対応してくれると信じて待つとします. stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer
467 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:55:57 ] いや、cinなどbasic_istreamでも(hex指定しない限り)十六進法の入力はできないのだから、 いつまで待っても、lexical_castでできるようにはならないだろう。
468 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 22:33:27 ] >466 そのリンクの最後の回答をちょい修正して #include <iostream> #include <boost/lexical_cast.hpp> template<typename T> class from_hex // For use with boost::lexical_cast { T value; public: operator T() const { return value; } friend std::istream& operator>>( std::istream& is, from_hex<T>& outValue ) { is >> std::hex >> outValue.value; return is; } }; int main(void) { std::cout << boost::lexical_cast<from_hex<int> >("0x12345") << std::endl; return 0; } でいいんじゃね?
469 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 22:37:51 ] >>468 0x ついてるときはそれでいいけどついてないときには使えないからな〜 中の人の対応を待ちたい
470 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 23:23:39 ] >469 codepad だと通るんだが。 ttp://codepad.org/nfkFKOZC
471 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 06:39:11 ] >>428 関数の中でグローバルポインタの割り当て/開放をしてるのかね。
472 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 14:55:21 ] strtol・strtoulなら文字列の書式から進数の自動判定が行われるんだし、 CRT使うと死ぬ体質じゃないんならそれ使って実装しときゃいいんでは。
473 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:32:21 ] lexical_cast<std::wstring>にすると、コンパイルエラーになるクラスがあったりして困るね。
474 名前:デフォルトの名無しさん [2010/01/12(火) 23:28:11 ] boost::asioでlocalhostのIPアドレス(自分のアドレス)を取得する方法を教えてください. loopbackアドレス(127.0.0.1)ではなく DHCP等によって割り当てられているアドレスの方です. 以下のような感じでlocalhostへの接続は出来ると思うのですが 一定の範囲のIPアドレス(例えば,192.168.1.1~192.168.1.9)に対して socketで接続を試みる時に 自分自身が範囲にあった場合にはconnectしないようにしたいと考えています. そのため,自分のIPアドレスを情報として持っておきたいのです. const int NUM_PORT = 7757; boost::asio::io_service ioService; boost::asio::ip::tcp::socket socket(ioService); socket.connect( boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::loopback(), NUM_PORT));
475 名前:デフォルトの名無しさん [2010/01/13(水) 00:08:33 ] d.hatena.ne.jp/tt_clown/20081225/p1
476 名前:デフォルトの名無しさん [2010/01/13(水) 00:11:50 ] www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/ipaddr.html
477 名前:デフォルトの名無しさん [2010/01/13(水) 00:18:15 ] grayhole.blogspot.com/2008/10/boostasio-syslog.html
478 名前:デフォルトの名無しさん [2010/01/13(水) 00:24:39 ] blog.goo.ne.jp/dc1394/e/a03ed6855fd2ff595ad1990b1c9d067c
479 名前:デフォルトの名無しさん [2010/01/13(水) 00:26:48 ] >>475 boostに固執する意味はないので,本質的にはその方法で解決できそうです. ありがとうございます. 自分でサーベイしたところ 今の時点でboostでもリゾルバに頼れば出来るということが分かりました. groups.google.co.jp/group/boost-list/browse_thread/thread/7142d22d86aa6bd9?pli=1 grayhole.blogspot.com/2009/11/boostasio-udp.html ただ DNS情報がないと駄目なので一部の環境では動かないことが予想されますが...
480 名前:デフォルトの名無しさん [2010/01/13(水) 00:28:28 ] >>476 ,477,478 のろのろ書いてる間にすみません. ありがとうございます.
481 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:15:45 ] std::vector<boost::tuples::tuple<std::string, int, int> > vの中に、 std::string strと、tupleの先頭の要素が等しいものがあるかどうかを、 std::binary_searchで判定したいのですが、どうbindを使えばいいのか 分かりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。
482 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:54:09 ] >>481 その目的なら比較関数オブジェクトを渡してやればいいと思うけど、 ↓みたいなのじゃなくでBoost.Bindを使う意味はあるの? struct comp { typedef boost::tuples::tuple<std::string, int, int> tuple_t; bool operator()(tuple_t const& lhs, tuple_t const& rhs) const { return lhs.get<0>( ) < rhs.get<0>( ); } };
483 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:03:19 ] あるいは、binary_searchの比較値にstd::stringを直接渡したいという話? でもbinary_searchに渡せるのは要素の値と決められてるから、bindに限らずそれは無理だね。 std::binary_search(v.begin( ), v.end( ), tuple_t(str, 0, 0), comp()); こうやるしかない。
484 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:11:55 ] >>483 そんなの決まってないよ。双方向の operator () が用意されてれば問題ない。 bind じゃ無理そうだけどね。
485 名前:481 mailto:sage [2010/01/16(土) 18:21:55 ] >>482 , 483, 484 ありがとうございました。無理みたいですね。 関数オブジェクトを使うことにします。
486 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:08:19 ] shared_ptrだけが使いたいんだけど その目的のためにBoostを入れるのは大掛かりすぎる、と思うような人に 良い解決策はありますか?
487 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:11:54 ] >>486 そういう用途で bcp っていうツールが用意されてるんだけど、 やってみると shared_ptr だけでもけっこうな依存関係になってて、 結局全部そのまま使うことにしたことがある。
488 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:14:11 ] >>486 Boostを入れるったって、別に全部リンクされるわけじゃないんだから、 普通にBoost入れてshared_ptrだけインクルードするんじゃだめなの?
489 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:39:55 ] だねえ、オブジェクトファイルも使わないし、 shared_ptr.hppをインクルードして使えば 完成したバイナリは希望通りshared_ptrだけを使ったバイナリになるし。
490 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:40:36 ] std::tr1::shared_ptrが使える環境にするとか
491 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:44:47 ] VC++2008ならSP1以降は標準でshared_ptr使えるな
492 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:48:33 ] 俺はstd::tr1::shared_ptrよりもboostの方が信頼できるor同等程度だと思っている。 だがそれはさておきboostの一部分だけ取っていじったのが認められるんなら boostそのものだって認められるだろ? やっぱそのままの方が良いと思うんだぜ。
493 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:00:35 ] チーム内のよくわからん奴が 勝手にshared_ptr以外のライブラリをiincludeするのを避けたいんだろ
494 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:07:19 ] エスパーすぎる
495 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:50:55 ] >Boostを入れるのは大掛かりすぎる 自分もboost入れる前はそう思ってた
496 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:05:31 ] そりゃTR1ライブラリよりBoostの方が格段に信頼性は上だろうな だが世の中には色々な(往々にして訳分からんand/or間違った)理由で「Boostは ちょっと」って奴もいるからなぁ 他人のコードでバグ出た時ってマジきついしー、みたいに言われた時は、そんなら 標準ライブラリも普通にバグ出るから使うなよって思った
497 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:15:41 ] そんなこと言ってるやつのコードよりboostの方がよっぽど信用できるわな
498 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:17:47 ] >>496 単に今までのスタイルを壊されるのが嫌だって理由の連中がいたりするからなあ そういうのがいると、バージョン管理ソフトさえ入れられない。
499 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:37:11 ] そういうヤツの会社は潰れるか少なくとも競争には負けるから 心配要らないよ。
500 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:29:34 ] >>486 まず数十行程度の自作スマートポインタから始める。 それで事足りればそれでおしまい。 それじゃ足りないと頭を抱えた時になって初めて確信を持ってshared_ptrを使う。
501 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 05:25:49 ] shared_ptrだと生に比べてパフォーマンスも下がるし、かなりサイズも大きくなるってのもあるし、 本当に必要かどうかは考えた方が良いのかも。 特にサイズはポインタ1つあたり10倍以上増えるんだっけ? 生ポインタ 参照カウンタ shared_ptrのvirtual関係 デリータ+virtual ミューテックス で。
502 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:43:23 ] shared_ptrを使わなければ実装できないデータ構造ではそれらのメンバは必須であり 10倍以上という増加も必要な増加だ。
503 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 08:18:04 ] >>501 それは最悪の場合のサイズでしょ。 virtual関係を共通化したり、atomic操作を使ったり、 実装上の工夫でもっと減らせる。
504 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 08:51:26 ] パッと見だとInterlocked系の操作で済ませてるからミューテックスとか要らなくね?
505 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:21:34 ] shared_ptrのミューテックスはマルチスレッドのためのものじゃない。
506 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:23:34 ] えっ
507 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:30:25 ] 何に使うの?
508 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:46:19 ] 日本の参政権は日本人のためだけのものじゃない。
509 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:48:11 ] 僕たちは天使じゃない。
510 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 10:07:51 ] トムは鉛筆ではない
511 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:07:00 ] Tom is a pen.
512 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:15:29 ] >>503 そりゃboostのは使わないで自分で作れと言ってるのか?
513 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:41:26 ] つーかboostのってmutexなんか使ってんの?
514 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:40:30 ] mutexではなくspinlockになってた
515 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:47:02 ] atomicなintrinsicが使えるような処理系ならその辺使わないんじゃね? 知らんけど
516 名前:デフォルトの名無しさん [2010/01/18(月) 15:35:24 ] spinlockを使うのは排他中の処理が非常に早く完了するだろうと予測しているから?
517 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:42:09 ] >>500 1 ひとりプロジェクトならスマートポインタは必要ない。 2 協調作業の場合、自作スマートポインタの仕様を説明するのが面倒だからよそのライブラリを使ったほうが説明しやすい ゆえに自作スマートポインタは必要ない
518 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:45:09 ] >>517 > 1 ひとりプロジェクトならスマートポインタは必要ない。 いやいやいや。
519 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 16:55:00 ] scoped_ptr以外はコード毎最適実装が無限にあるからね
520 名前:503 mailto:sage [2010/01/18(月) 19:32:14 ] >>512 誤解させてすまんかった。 boostの環境依存コードにはすでに実装上の工夫がだいぶ入っている。
521 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:14:11 ] >>501 それはどこのshared_ptrですか? boostのshared_ptrはカウンタクラスにvtableとuse_countとweak_countしかないよ。 アトミック命令でインクリメントするからミューテックスは必要ないし。