[過去ログ] Boost総合スレ part8 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
408: 2009/12/18(金) 14:15:33 AAS
karaokeThread があやしいな。
409: 2009/12/18(金) 14:17:44 AAS
>>407
まだ変に省略してないか?
VC++ だとテンプレート引数の情報とかエラーメッセージに出たような・・・。
常套手段だけど、同じエラーを出す最小のソースを作ってみるといい。
410: 2009/12/18(金) 14:24:13 AAS
>>407 外部リンク:ja.lmgtfy.com
411: 401 2009/12/18(金) 22:53:49 AAS
自己解決しました。どうやらifstream.tellg()の戻り値を変換させるときに
のみエラーが出るようなので、そこだけstatic_castにしました。
どうもお騒がせしました。
412(1): 2009/12/19(土) 02:08:38 AAS
更新しました。今回初めてgraph_parallelのlink=shared, runtime-link=sharedのビルドが可能になり、
同じく初めてビルドエラー無しでフルビルドが出来ました。
外部リンク:booster.x0.to
以下更新内容の一部
[Program_options]
consistent handling of namespace std
[Spirit]
unicode support
Spirit: fixed include guard conflict (fixes #3724)
[Graph]
Factored out declspec code; added BOOST_GRAPH_SOURCE where necessary
[Iostream]
If a write is going to go past the end of the restricted area,
write up to the end before throwing an exception.
[Uuid]
Fixed name_generator for different sizes of wchar_t
[Serialization]
1. Fixed memory leak in shared_ptr loading
2. Fixed error in polymorphic archive implementation
Speed up loading of ordered collections
[Smart_ptr]
Avoid static destruction order issues with quick_allocator.
[Proto]
fix BOOST_PROTO_EXTENDS to work with elaborated types
[Xpressive]
disable proto's unary operator& for basic_regex objects, references #3712
[Fusion]
corrected reverse_view
[Gil]
Added gil namespace prefix to at_c<...> calls.
[Regex]
Symbian patches. Fixes #3764. Fixes #3763.
413: 2009/12/19(土) 05:04:38 AAS
>>412
いつも乙。
ところで列記してある更新内容のリストはどこで参照できますか?
414(1): 2009/12/19(土) 06:58:03 AAS
全ての更新内容はrarファイル内のchangelog.txtに記してありますが、
TortoiseSVN上の更新情報をテキストデータとして羅列した状態ですのであまり読み易くはありません。
公式サイトの下記ページにも更新情報がありますが、sandboxの更新と一緒になっている為少々読み辛いです。
Boost-Commit mailing page: By Subject
外部リンク[php]:lists.boost.org
ローカルリポジトリを構築して管理ソフトからログを読むのが、一番整頓されていて分かり易いと思います。
415(3): 2009/12/20(日) 05:18:17 AAS
>>414
ありがとうございます、参考になります。
ところで、VC9 にて
#include <boost/utility/value_init.hpp>
#include <boost/wave/util/cpp_include_paths.hpp>
をこの順にインクルードするとコンパイルエラーになります。
>e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\aligned_storage.hpp(79) : error C2872: 'detail' : あいまいなシンボルです。
> 'boost::detail' である可能性があります。
> または 'boost::multi_index::detail'
>e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\aligned_storage.hpp(53) : error C2872: 'detail' : あいまいなシンボルです。
> 'boost::detail' である可能性があります。
> または 'boost::multi_index::detail'
おそらく aligned_storage.hpp 内のソースで
boost::detail::aligned_storage のスコープで detail::ほげほげ と(boost::detail のつもりで)しているので
他スコープの detail 名前空間と衝突しているのかと。
Boost 1.40〜1.42 で確認。
416(2): 2009/12/20(日) 07:18:45 AAS
>415
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) + Boost 1.40 で再現しない。
Boost trac の ticket には無さげ。
恐らく↓あたりの VC のバグだと思う。
VC++ 8.0 reports unexisting ambiguity in certain context having a using directive
外部リンク[aspx]:connect.microsoft.com
あと、細かいけど 1.42 は未リリースだから現時点(あるいは特定リビジョン)での trunk でという表現が
正しいと思う。
417: 2009/12/20(日) 09:50:29 AAS
>>416
ありがとうございます、参考になります。
418(1): 415 2009/12/20(日) 15:02:25 AAS
>>415 ticket に挙げたいけど英語力皆無で無理げ。
俺ライブラリのヘッダをまとめてインクルードしたのをコンパイルしたら、
条件によって出たり出なかったりするようなエラーが出るわ出るわ。
VC9 + Boost (1.40 ~ svn58453)
・ boost::operators を使ったクラス Operatable を定義
・ 適当なテンプレートクラス Overloaded<T> を定義
・ Overloaded<T>& を引数にとる、グローバルな & (アドレス)演算子オーバーロードの関数テンプレートを定義
・ boost::throw_exception( ) の使用
この条件が揃うとエラーが出る。
>e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\throw_exception.hpp(69) : error C3767: '&': 候補の関数はアクセス可能ではありません。
> 'e:\library\c++\boost\boost_1_42_vc2008_svn58453\boost\operators.hpp(260)' の friend 関数である可能性があります : '&' [引数依存の照合を使って検出される可能性があります]
> e:\project\vc9\test2\test2\main.cpp(22) : コンパイルされたクラスの テンプレート のインスタンス化 'void boost::throw_exception<std::exception>(const E &)' の参照を確認してください
> with
> [
> E=std::exception
> ]
以下、調べたかぎり最小のコード。
#include <exception>
#include <boost/operators.hpp>
#include <boost/throw_exception.hpp>
class Operatable : private boost::operators<Operatable> { };
template<typename T> class Overloaded { };
template<typename T> Overloaded<T>* operator&(Overloaded<T>& v) { return 0; }
void ThrowException() { boost::throw_exception(std::exception()); }
// ThrowException() の代わりにこの関数を定義してもエラーになる
// どうやら boost::exception_detail::clone_impl<T> の使用がまずいらしい
//void TestExceptionDetail() { boost::exception_detail::clone_impl<std::exception> c((std::exception())); }
419: 2009/12/20(日) 16:53:44 AAS
追記。
boost::operators<Operatable> の部分が boost::integer_arithmetic<Operatable> などなら問題ない。
どうやら boost::andable<Operatable> が問題らしい。
でも andable って (Lhs & Rhs) の形だよね?
アドレス演算子との絡みでおかしくなるのがようわからん。
C3767 について↓でもそれらしい話が出てるけど(ADL関連)なんとも。
外部リンク:www.freeml.com
420: 2009/12/20(日) 22:53:17 AAS
>418
> >>415 ticket に挙げたいけど英語力皆無で無理げ。
大丈夫だ。我々には C++ という共通語がある!
とりあえず boost/wave/util/cpp_include_paths.hpp の中にある using namespace boost::multi_index; 直下の
get (2ヶ所)を boost::multi_index::get に qualify してやれば #include のみの場合はエラーは出なくなったけど
これで正常動作するのかは分からない。
要因としては >416 のバグのせいっぽいね。
>以下、調べたかぎり最小のコード。
やっぱり gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) + Boost 1.40 で再現しない。
実際のコードだとうまく行かないかもしれないけど、
namespace my {
class Operatable : private boost::operators<Operatable> { };
template<typename T> class Overloaded { };
template<typename T> Overloaded<T>* operator&(Overloaded<T>& v) { return 0; }
void ThrowException() { boost::throw_exception(std::exception()); }
}
って感じで namespace に閉じ込めたら通ったりしない?
421(1): 2009/12/22(火) 21:38:43 AAS
すみません、質問があるんですが
今現在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: 2009/12/22(火) 21:57:39 AAS
probably corrupted stack
423(1): 2009/12/22(火) 21:59:52 AAS
よく分からんが、uBLASは1.40でlu.hppも含めてアップデートされているので
1.40で試してみたらどう
424: 2009/12/22(火) 22:22:56 AAS
>>423
ありがとうございます
とりあえず、アップデートして行ってみましたが状況変わらずでした
LU分解の後退代入で配列の不正アクセスか,配列が破壊されてるかどちらかが起きてるのはわかるんですが
毎回違うタイミングで起きるので原因が良くわからないです
代入する値はループ毎に変わりますが乱数を使ってるわけではないのでエラーを吐き出すとしたら同じループ回数だとは思うんです
425: 2009/12/22(火) 22:39:03 AAS
取り敢えず、デバッグして発生条件を絞っていくしかないな
426: 2009/12/23(水) 01:01:44 AAS
まさかとは思うがuBLAS最新はVC系はサポートされてないぞ。
427: 2009/12/23(水) 01:06:07 AAS
ビタミンC?
428(1): 2009/12/23(水) 05:00:13 AAS
>>421
もうエラーの内容も覚えていないんだけど
uBLASつかってるシングルスレッドのプログラムを
問題を複数に分けてマルチスレッドで分散してやるようにしたらわけのわからないエラーが出始めた
納期があったから細かく調べずにマルチプロセスで逃げたw
まったく参考にならんけど思い出した
429: 2009/12/26(土) 00:17:37 AAS
更新しました。
外部リンク: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: 2009/12/29(火) 17:07:19 AAS
Webを検索していて驚きました。
外部リンク[hpp]:webdocs.cs.ualberta.ca
ここに
boost::complex
というテンプレートがあるのですが、これはなんでしょうか?
昔std::complexが標準にない時代にboostに同等のものがあったとか、
そういうことはありますか?
431: 2010/01/02(土) 09:11:03 AAS
初歩的な質問で恐縮なのですが…
win2000+VisualStudio2005+Microsoft Platform SDK for Windows Server 2003 SP1で、
Boost1.41をダウンロードしてきてbootstrapとbjamを実行し、
外部リンク[cpp]:www.boost.org
を試しにコンパイルしてみたのですが、
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: 2010/01/02(土) 10:08:41 AAS
ファイル名が微妙に違ったりしてないかい
433: 2010/01/02(土) 11:58:11 AAS
>指定されたファイルはC:\Boost\bin.v2\libs\filesystem\の下層にちゃんとあるのですが、
>(中略)
>ライブラリファイルにC:\Boost\bin.v2\libsを追加
bin.v2 の下は未インストール状態のものなのでその下層のパスまでちゃんと指定するか、install して
一ヶ所にまとめられたディレクトリを指定するかどっちかだと思われ。
434: 2010/01/02(土) 12:34:19 AAS
おいおい、bin.v2はビルド時の中間ファイル置き場だろ。
bjamのオプション次第だけど、普通はstage\libだろ。
435: 2010/01/02(土) 16:39:47 AAS
431です。
ライブラリファイルをC:\Boost\stage\libに変更したところ、コンパイルが通るようになりました。
回答してくださった方々、本当にありがとうございます。
436(3): 2010/01/03(日) 11:53:28 AAS
boostからMPICH2を使ってみようと思うんだが、
MPICH2(Win32 64bit)をインストールしても
binフォルダにmpichコマンドやmpeコマンドが見当たらない。
そういうもの?
外部リンク[html]:www.kmonos.net
ここの手順そのままで問題ない?
437: 2010/01/03(日) 18:56:13 AAS
>>436
俺はやったことないからわからんが、そのページに
>MPICH2 では手元の環境ではうまく動かず…。
って書いてあるのに、そのままで問題ないかと言われても…。
438: 2010/01/04(月) 13:41:42 AAS
>>436
MPIの使い方はよく分かりません。
Boost 1.41 + MPICH2で試してみましたが、ビルドまでは通るものの実行時に例外エラーが発生しますね。
439: 2010/01/04(月) 13:58:53 AAS
更新しました。Boost.MPIにつきましては、今後MPICH2以外の使用を検討致します。
外部リンク: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(2): 2010/01/05(火) 12:51:23 AAS
はじめまして。Boost.MultiArray の設計について教えていただきたいのですが、
multi_array_ref や const_multi_array_ref は何のために設計されているのでしょうか?
参照では問題がある場合に使うことを想定しているのでしょうか?
441(1): 2010/01/05(火) 16:41:32 AAS
参照の参照を内部で回避してるんじゃないかとエスパー
442: 440 2010/01/05(火) 19:07:57 AAS
>>441
どうもありがとうございます。やっぱりそうなんですかね。
443(1): 2010/01/05(火) 19:28:58 AAS
実装読まずに適当に推測すると
名前的にはauto_ptrに対するauto_ptr_refとかと同じ用途なんじゃない?
444(1): 2010/01/05(火) 19:33:56 AAS
用途的には、multi_array_refはトラディショナルな配列のポインタを渡してmulti_arrayとして扱うためのラッパー。
445: 2010/01/05(火) 20:00:51 AAS
fucktoryパターンってなに?><
446: 2010/01/05(火) 20:11:44 AAS
fucker
447: 2010/01/05(火) 20:12:21 AAS
子作りでインスタンスを増やすパターン
448: 2010/01/05(火) 20:14:58 AAS
>>443
> 実装読まずに適当に推測すると
> 名前的には
現実的にはこれができるのが一番いいよね。
むずかしいけどさ。
俺 名前づけのセンスないし。
449: 2010/01/06(水) 22:48:22 AAS
「画像を扱うライブラリが増える」と聞いて、bimapだと勘違いした人、正直に手を上げなさいノシ
450(1): 2010/01/06(水) 23:52:48 AAS
Boost.SpiritはV2になって、
結局 何が良くなったのでしょうか?
コンパイル速度は悪くなったと思いますが、
実行時速度とかでしょうか?
451(1): 2010/01/07(木) 12:19:06 AAS
Spiritのソースのメンテ性(Spiritを使ったソースではない)が上がったんじゃなかったか。
452: 2010/01/07(木) 12:43:56 AAS
SpiritとExpressiveってコア統合中とか聞いたけど、最近のでは実現してるの?
453(1): 2010/01/07(木) 13:08:45 AAS
shared_ptrで、別のshared_ptrに参照させる際に
weak_ptrのlock関数経由(もしくはshared_from_this関数)と
'=' での直接代入経由で参照カウントの挙動に変化がなかったけど
これってどっちでもいいの?
BoostはVer1_40_0です。
454: 2010/01/07(木) 13:11:05 AAS
>>453
あたりまえじゃないか。
挙動が変わるはずだという理屈があるなら言ってみれ。
455: 2010/01/07(木) 13:21:25 AAS
直接代入が参照のコピーか移動かの仕様が自分の中でちょっと疑問でして、
実行結果を見れば一目了然なんですが、
これですっきりしました、有難うございました。
456: 450 2010/01/07(木) 20:11:07 AAS
>>451
ありがとうございます。
そうですか。
・・・でもまだ正直v1よりバグが多いとかですかね?
457(1): 2010/01/07(木) 20:42:56 AAS
Spiritは毎日のように更新されてるので、バグ多しっつーより未完成ってイメージが
458: 2010/01/07(木) 20:45:32 AAS
>>457
そうなんですか。
まさかのこれ以上の機能拡充とかですかね。
ありがとうございます。
459: 2010/01/08(金) 21:17:53 AAS
更新しました。Boost.MPIのビルドにはMPICH 1.2.5を使用しましたが、>>436のサンプルは上手く動作しません。
外部リンク: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: 2010/01/08(金) 22:08:02 AAS
と、改めてMPICH2の使い方を調べてテストし直してみましたところ、
x32, x64双方共正常に動作しました。
管理者権限でコマンドプロンプトを起動して、
smpd -install
mpiexec -n 8 test.exe
です。
Boost.MPIは次回のビルドからまたMPICH2仕様に戻します。
461: 2010/01/08(金) 22:18:17 AAS
あ、mpiexecよりGUIであるwmpiexecから起動した方が簡単ですね。
462: 440 2010/01/09(土) 14:59:43 AAS
>>444
なるほど!仕様を読んでみると確かにそういう風に使えるんですね、というか書いてありますね…見落としてました…すみません。
463(1): [―{}@{}@{}-] 2010/01/09(土) 17:03:30 AAS
boost::lexical_cast<int>("0x12345");のように、0xがついている文字列が
変換できないのですが、うまく変更できるようにするにはどうすればいいでしょうか?
464(1): 2010/01/09(土) 17:34:08 AAS
lexical_castは誰もが待ち望んでいて、そしてガッカリした代物だよな・・・
465(1): 2010/01/09(土) 17:34:14 AAS
差し替え更新しました。Boost.MPIはMPICH2 1.2.1仕様に戻しました。
外部リンク: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)
外部リンク[aspx]:msdn.microsoft.com
466(1): [―{}@{}@{}-] 463 2010/01/09(土) 17:41:23 AAS
>>464
>>465
ありがとうございます.
lexical_cast は過去に 1e+8 のような形式を変換できずがっかりした記憶が
あるのですが、いつの間にかできるようになってて驚きもしました.
0x にもいつか対応してくれると信じて待つとします.
外部リンク:stackoverflow.com
467: 2010/01/09(土) 17:55:57 AAS
いや、cinなどbasic_istreamでも(hex指定しない限り)十六進法の入力はできないのだから、
いつまで待っても、lexical_castでできるようにはならないだろう。
468(1): 2010/01/09(土) 22:33:27 AAS
>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(1): 2010/01/09(土) 22:37:51 AAS
>>468
0x ついてるときはそれでいいけどついてないときには使えないからな〜
中の人の対応を待ちたい
470: 2010/01/09(土) 23:23:39 AAS
>469
codepad だと通るんだが。
外部リンク:codepad.org
471: 2010/01/10(日) 06:39:11 AAS
>>428
関数の中でグローバルポインタの割り当て/開放をしてるのかね。
472: 2010/01/10(日) 14:55:21 AAS
strtol・strtoulなら文字列の書式から進数の自動判定が行われるんだし、
CRT使うと死ぬ体質じゃないんならそれ使って実装しときゃいいんでは。
473: 2010/01/10(日) 22:32:21 AAS
lexical_cast<std::wstring>にすると、コンパイルエラーになるクラスがあったりして困るね。
474: 2010/01/12(火) 23:28:11 AAS
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(1): 2010/01/13(水) 00:08:33 AAS
外部リンク:d.hatena.ne.jp
476(1): 2010/01/13(水) 00:11:50 AAS
外部リンク[html]:www.kt.rim.or.jp
477(1): 2010/01/13(水) 00:18:15 AAS
外部リンク[html]:grayhole.blogspot.com
478(1): 2010/01/13(水) 00:24:39 AAS
外部リンク:blog.goo.ne.jp
479: 2010/01/13(水) 00:26:48 AAS
>>475
boostに固執する意味はないので,本質的にはその方法で解決できそうです.
ありがとうございます.
自分でサーベイしたところ
今の時点でboostでもリゾルバに頼れば出来るということが分かりました.
外部リンク:groups.google.co.jp
外部リンク[html]:grayhole.blogspot.com
ただ
DNS情報がないと駄目なので一部の環境では動かないことが予想されますが...
480: 2010/01/13(水) 00:28:28 AAS
>>476,477,478
のろのろ書いてる間にすみません.
ありがとうございます.
481(3): 2010/01/16(土) 17:15:45 AAS
std::vector<boost::tuples::tuple<std::string, int, int> > vの中に、
std::string strと、tupleの先頭の要素が等しいものがあるかどうかを、
std::binary_searchで判定したいのですが、どうbindを使えばいいのか
分かりません。
どなたか教えていただけませんでしょうか。よろしくお願いします。
482(1): 2010/01/16(土) 17:54:09 AAS
>>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(1): 2010/01/16(土) 18:03:19 AAS
あるいは、binary_searchの比較値にstd::stringを直接渡したいという話?
でもbinary_searchに渡せるのは要素の値と決められてるから、bindに限らずそれは無理だね。
std::binary_search(v.begin( ), v.end( ), tuple_t(str, 0, 0), comp());
こうやるしかない。
484: 2010/01/16(土) 18:11:55 AAS
>>483
そんなの決まってないよ。双方向の operator () が用意されてれば問題ない。
bind じゃ無理そうだけどね。
485: 481 2010/01/16(土) 18:21:55 AAS
>>482 483, 484
ありがとうございました。無理みたいですね。
関数オブジェクトを使うことにします。
486(3): 2010/01/17(日) 17:08:19 AAS
shared_ptrだけが使いたいんだけど
その目的のためにBoostを入れるのは大掛かりすぎる、と思うような人に
良い解決策はありますか?
487: 2010/01/17(日) 17:11:54 AAS
>>486
そういう用途で bcp っていうツールが用意されてるんだけど、
やってみると shared_ptr だけでもけっこうな依存関係になってて、
結局全部そのまま使うことにしたことがある。
488: 2010/01/17(日) 17:14:11 AAS
>>486
Boostを入れるったって、別に全部リンクされるわけじゃないんだから、
普通にBoost入れてshared_ptrだけインクルードするんじゃだめなの?
489: 2010/01/17(日) 17:39:55 AAS
だねえ、オブジェクトファイルも使わないし、
shared_ptr.hppをインクルードして使えば
完成したバイナリは希望通りshared_ptrだけを使ったバイナリになるし。
490: 2010/01/17(日) 17:40:36 AAS
std::tr1::shared_ptrが使える環境にするとか
491: 2010/01/17(日) 17:44:47 AAS
VC++2008ならSP1以降は標準でshared_ptr使えるな
492: 2010/01/17(日) 17:48:33 AAS
俺はstd::tr1::shared_ptrよりもboostの方が信頼できるor同等程度だと思っている。
だがそれはさておきboostの一部分だけ取っていじったのが認められるんなら
boostそのものだって認められるだろ?
やっぱそのままの方が良いと思うんだぜ。
493: 2010/01/17(日) 18:00:35 AAS
チーム内のよくわからん奴が
勝手にshared_ptr以外のライブラリをiincludeするのを避けたいんだろ
494: 2010/01/17(日) 18:07:19 AAS
エスパーすぎる
495: 2010/01/17(日) 18:50:55 AAS
>Boostを入れるのは大掛かりすぎる
自分もboost入れる前はそう思ってた
496(1): 2010/01/17(日) 19:05:31 AAS
そりゃTR1ライブラリよりBoostの方が格段に信頼性は上だろうな
だが世の中には色々な(往々にして訳分からんand/or間違った)理由で「Boostは
ちょっと」って奴もいるからなぁ
他人のコードでバグ出た時ってマジきついしー、みたいに言われた時は、そんなら
標準ライブラリも普通にバグ出るから使うなよって思った
497: 2010/01/17(日) 19:15:41 AAS
そんなこと言ってるやつのコードよりboostの方がよっぽど信用できるわな
498: 2010/01/17(日) 20:17:47 AAS
>>496 単に今までのスタイルを壊されるのが嫌だって理由の連中がいたりするからなあ
そういうのがいると、バージョン管理ソフトさえ入れられない。
499: 2010/01/17(日) 20:37:11 AAS
そういうヤツの会社は潰れるか少なくとも競争には負けるから
心配要らないよ。
500(1): 2010/01/17(日) 21:29:34 AAS
>>486
まず数十行程度の自作スマートポインタから始める。
それで事足りればそれでおしまい。
それじゃ足りないと頭を抱えた時になって初めて確信を持ってshared_ptrを使う。
501(2): 2010/01/18(月) 05:25:49 AAS
shared_ptrだと生に比べてパフォーマンスも下がるし、かなりサイズも大きくなるってのもあるし、
本当に必要かどうかは考えた方が良いのかも。
特にサイズはポインタ1つあたり10倍以上増えるんだっけ?
生ポインタ
参照カウンタ
shared_ptrのvirtual関係
デリータ+virtual
ミューテックス
で。
502: 2010/01/18(月) 06:43:23 AAS
shared_ptrを使わなければ実装できないデータ構造ではそれらのメンバは必須であり
10倍以上という増加も必要な増加だ。
503(2): 2010/01/18(月) 08:18:04 AAS
>>501
それは最悪の場合のサイズでしょ。
virtual関係を共通化したり、atomic操作を使ったり、
実装上の工夫でもっと減らせる。
504: 2010/01/18(月) 08:51:26 AAS
パッと見だとInterlocked系の操作で済ませてるからミューテックスとか要らなくね?
505: 2010/01/18(月) 09:21:34 AAS
shared_ptrのミューテックスはマルチスレッドのためのものじゃない。
506: 2010/01/18(月) 09:23:34 AAS
えっ
507: 2010/01/18(月) 09:30:25 AAS
何に使うの?
508: 2010/01/18(月) 09:46:19 AAS
日本の参政権は日本人のためだけのものじゃない。
509: 2010/01/18(月) 09:48:11 AAS
僕たちは天使じゃない。
510: 2010/01/18(月) 10:07:51 AAS
トムは鉛筆ではない
511: 2010/01/18(月) 13:07:00 AAS
Tom is a pen.
512(1): 2010/01/18(月) 13:15:29 AAS
>>503
そりゃboostのは使わないで自分で作れと言ってるのか?
513: 2010/01/18(月) 13:41:26 AAS
つーかboostのってmutexなんか使ってんの?
514: 2010/01/18(月) 14:40:30 AAS
mutexではなくspinlockになってた
515: 2010/01/18(月) 14:47:02 AAS
atomicなintrinsicが使えるような処理系ならその辺使わないんじゃね?
知らんけど
516: 2010/01/18(月) 15:35:24 AAS
spinlockを使うのは排他中の処理が非常に早く完了するだろうと予測しているから?
517(1): 2010/01/18(月) 16:42:09 AAS
>>500
1 ひとりプロジェクトならスマートポインタは必要ない。
2 協調作業の場合、自作スマートポインタの仕様を説明するのが面倒だからよそのライブラリを使ったほうが説明しやすい
ゆえに自作スマートポインタは必要ない
518: 2010/01/18(月) 16:45:09 AAS
>>517
> 1 ひとりプロジェクトならスマートポインタは必要ない。
いやいやいや。
519: 2010/01/18(月) 16:55:00 AAS
scoped_ptr以外はコード毎最適実装が無限にあるからね
520: 503 2010/01/18(月) 19:32:14 AAS
>>512
誤解させてすまんかった。
boostの環境依存コードにはすでに実装上の工夫がだいぶ入っている。
521(1): 2010/01/18(月) 20:14:11 AAS
>>501
それはどこのshared_ptrですか?
boostのshared_ptrはカウンタクラスにvtableとuse_countとweak_countしかないよ。
アトミック命令でインクリメントするからミューテックスは必要ないし。
522: 2010/01/18(月) 20:23:32 AAS
>>521
アトミックも何も使えない環境だと本当に肥大化するよ。
1.35のsp_counted_base_pt.hppを見てみ。
523(1): 2010/01/18(月) 21:02:05 AAS
シングルスレッド確定なら
#define BOOST_SP_DISABLE_THREADS
という手もある
524: 2010/01/18(月) 21:10:38 AAS
>>523
そんなん初めて知ったわ
525: 2010/01/19(火) 00:05:31 AAS
shared_ptrだけ使いたいって欲求は少しわかるな。
環境や使用できるライブラリが他人に決められてしまう場合とか。
せめてshared_ptrだけの導入なら説得できるんじゃないかとか思ったことがあるw
>>481
find_if()とかでこんなの考えたけど意味が違うか
find_if( v.begin(), v.end(), bind( &tuple<string, int, int>::get<0 _1 ) == str );
binary_search()は思いつかないなあ
526: 2010/01/19(火) 01:03:05 AAS
ライブラリの普及活動ってデリケートだよな、
失敗時に下手すりゃ関連ライブラリにも飛び火するし。
527(1): progress_display 2010/01/20(水) 13:10:13 AAS
まったくですよ
528: 2010/01/20(水) 15:01:57 AAS
>>527
貴方はお引き取りくださいw
529: 2010/01/20(水) 16:37:42 AAS
飛び火するようなアレだっけ?
530: 2010/01/20(水) 16:54:00 BE AAS
progress_displayを見たとき
ああこれは他のプロセスから進捗状況を取得できるAPIも用意されてるんだな。
そうにちがいない。
まさか表示するだけなんてことはあるまい。
531: 2010/01/21(木) 11:44:45 AAS
もう許してやれよ
532: compressed_pai 2010/01/22(金) 20:58:00 AAS
絶対に許さない
533: 2010/01/23(土) 00:59:47 AAS
paiってなんかえろいな
534: [―{}@{}@{}-] 2010/01/23(土) 08:00:23 AAS
貧乳ですねわかります
上下前次1-新書関写板覧索設栞歴
あと 467 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.420s*