1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:04:01 ] 過去スレ 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/
21 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:30:39 ] 良く見ていないが以前から計画のあったphoenix統合が実施されてるっぽい?
22 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:05:02 ] boost1.35 を VC++7.1 でビルドしようとしたら LNK1104: コンパイラは、ファイル 'libboost_filesystem-vc71-sgd-1_35.lib' を開くことができません。 と出た.誰か助けて インクルード方法は #include "boost/filesystem/fstream.hpp" で,VC++のオプションでインクルードファイルに c:\..\boost と設定しています
23 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:28:29 ] bjam使っとけば
24 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:37:41 ] 今ごろは.libがboostに必要なの?
25 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:51:12 ] もしかして「今時は」と「この頃は」が混ざったか?
26 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:10:24 ] リンカオプションも知らずにboostをビルドですか
27 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:11:54 ] 「今頃は」という言葉もあると思った >>22 構成プロパティ>リンカ>全般>追加のライブラリディレクトリ に(boostのディレクトリ)\libsを追加 そうすればVC++ではboostがオートリンクしてくれる それはともかくスタティックリンクの仕方も分からず ヘッダのインクルードと混同しているのにboostを使うのは無謀と思うんだが…… まあ並行して学んだ人もいるかもしれないけど あと「boostをビルド」じゃなくて「boostを使ったプロジェクトをビルド」だろう。多分
28 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 18:31:31 ] >>27 boostビルドしなきゃライブラリができないじゃないか
29 名前:27 mailto:sage [2008/04/29(火) 18:54:50 ] あ、1.35はWindows用インストーラはまだないのか…… 初心者がbjamなしでわざわざビルドするのはもっと無謀だろ……
30 名前:22 mailto:sage [2008/05/01(木) 08:36:22 ] すみません色々見直したんですが bjam は boost-jam-3.1.16-1-ntx86.zip のものを boost1.35 を VC++7.1 を使用してboostをビルド したつもりだったんですがやはりVCで「boostを使ったプロジェクト」のビルドが出来ません. 「ツール」→「オプション」→「プロジェクト」→「VC++ディレクトリ」で インクルードディレクトリに C:\...\boost\bin.v2 ライブラリファイルディレクトリに C:\...\boost\stage\lib としています. 何がいけないのか自分だけではよくわかりません.どうかご教示いただけないでしょうか?
31 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 09:12:28 ] >>30 まずはそのlibファイルがあるか確認しよう。
32 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 12:04:44 ] bjamのオプションをちゃんと指定しないと 足りないライブラリがあるからねぇ。 1.34.1からオプションが変わってたので、 自分も何度かビルドし直しました。
33 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 19:40:22 ] >>30 ttp://www.boost-consulting.com/products/free まずは1.34.1インストーラを使ってみたらいいんじゃないかな?
34 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 05:34:02 ] >>22 >>7 と>>8 を夜魅魔症
35 名前:22 mailto:sage [2008/05/03(土) 00:37:26 ] >>31 確認したところ,-sgd- 付きの lib ファイルはありませんでした. 情けないことに指摘されるまでずっとあると思っていました. >>34 シングルスレッド向けlibファイルを作るオプションコマンドを色々な形で実行してみても fail update と出て -sgd- ファイルが作られることはありませんでした. 他にもboostの全てをビルドするしたという方と同じコマンドを実行してもやはりfail updateと出て生成されることはありませんでした. >>33 var1.34.1インストーラを使い,var1.35 とは別に filesystem を生成し,プロジェクトもそれに合わせて設定しなおしたところプロジェクトのビルドはすんなりと通りました. 初めて boost を使うのでもう最新版であることにこだわらず var1.34.1 を使うことにしました. 解決せずに終わることにすっきりしないでもないですが,余裕もないのでこれで質問を終わります. レスしてくれた方々,ありがとうございました.解決せずに〆ることになり申し訳ございません.
36 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 13:15:00 ] 世の中にグラフ構造のデータは沢山あるけど boost.graph を活用している人いますか? ちょっとしたデータなら自分で自前グラフデータ作ったほうがいいのか その辺のしきいってどのあたりなんだろ
37 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:00:59 ] インストーラ版がわけ分からなくて, Let's Boostの指示通りで成功した俺が来ましたよ. Visual Studio 2005 ProのVC++への導入ができました. boost_1_35_0.zipとboost-jam-3.1.16-1-ntx86.zipを入手し, "%VS80COMNTOOLS%vsvars.bat" を実行し, D:\Develop\boost_1_35_0\bjam.exe --toolset=msvc link=static,shared release debug stage を実行しました.VSのパス設定は インクルードファイル:D:\Develop\boost_1_35_0 ライブラリファイル:D:\Develop\boost_1_35_0\stage\lib とし,C++ クックブック レシピ9.12のビルド・実行が成功しました. 補足要求とか,誤解指摘などあればどうぞ.
38 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:14:30 ] というかなんでいまさらになって、Boostのインストールの話ばかりなんだ。 インストールなんて難しくないだろ。 SVNからHEAD引っ張ってきてbjamでビルドするだけだろ。
39 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:22:32 ] 使ってみようっ人がが増えたんだからいいじゃないか。
40 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:35:08 ] >>38 Win32環境だと使ってるコンパイラによって困ったりするのと 一番こまっちゃうのはVSのバージョン複数同時インストールしてるとワケワカメになる事だと思う。 unix系とりあえず自分の使ってるシステムでは問題でなかった。
41 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:48:15 ] いや、それほど困るか? 俺はstageディレクトリを作っているが、要するにVSのバージョンに合わせて、 stageディレクトリを複数用意すればいいだけの話だろ。 VSがひとつだけだとしても、32bitコードと64bitコードがあるが。
42 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:32:30 ] boost便利なんだけどバイナリサイズが凄い勢いで大きくなってくんだよなぁ
43 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:09:24 ] さっさとC++の標準になってもらいたいもんだな
44 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:32:34 ] というかlambdaが標準入りで大幅に書き直しを迫られるものが多いかと… さらにtraits→concept。 どちらも下方互換性が失われるわけじゃないから、 boostに留まるならすぐに直す必要はないけど、 標準入りするには必須かと。
45 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:18:24 ] VCバージョン違いに加えてstlport使ってると更にややこしい 何とかビルドするのに1週間も掛かってしまったぜ
46 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:59:13 ] インストーラー出るのいつも遅いけど作るのそんな時間かかるもんかね?
47 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:03:59 ] 最近のboostは ./configure make checkinstall (以前のバージョンだとここでこけた) できるな。
48 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 13:45:05 ] >36 Boost Graph はグラフデータを表す方がメインじゃなくて、汎用的に使えるグラフ上のアルゴリズムの方がメインだと思う。 自前でグラフデータ作るなら Boost Graph に渡せるようにしとくと便利、みたいな。 ちょっとしたデータの方こそ adjacency_list とか使ってさくっと済ませて、速度なり機能なり必要な要件があるなら それに適したデータを作るなり、アダプタ書くなりする方がいいんじゃないかと思う。
49 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:51:55 ] .hpp がきもちわるくて Boost つかってない なんだよ Header++ って。ヘッダ仕様自体は変わってないつーのwwww
50 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:52:51 ] そうかそうか
51 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:52:59 ] 中身がCなヘッダとC++なヘッダを区別したいお と思ったことが一回ぐらいない?
52 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:58:05 ] .hpp って読むときどうしてもドットフププって読んじゃうんだよね。
53 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:12:19 ] >>49 でもこの分野、既存の用語の「反対の意味」とか「○○バージョン」を意味したいだけの造語、 結構多いでしょ。 ソフトウェアだって、単にハードウェアとの対比で生まれただけで、別に ソフトウェアの何かがsoftだからそう呼ばれるようになったわけじゃないし。
54 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:41:02 ] そもそもBoostのヘッダの拡張子が.hだったとしても、 どうせ49は別の難癖付けてBoostを使わないと思う。 はっきりとBoost使ったコードはきもいから嫌だとか 正々堂々と言うほうがかえってすっきりした気分になれる、たぶんお互いに。
55 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:00:57 ] 大体、拡張子が気に入らないから使わないとかおかしいだろw
56 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:17:00 ] 標準ライブラリは拡張子が無いので使いませんw
57 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:46:35 ] hppって昔からあるような
58 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 04:34:00 ] hppもHもhhもhxxもh++も大昔から普通にあります。 ただ>>49 が誰かに構ってほしかっただけです。 気にしないで下さい。
59 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:47:23 ] うざ
60 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:00:36 ] .cxxって何だよw と思ったことならある
61 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:06:30 ] >>60 xx が ++ を英字で模倣したものだと気付くのに時間かかった。 Makefile とかは大文字で普通に使ってるから余計わかりにくい。
62 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:23:27 ] C++コードからしか使われないヘッダの拡張子は .h を使わないで欲しい Cからも使えるヘッダなら .h でいいけど
63 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:32:07 ] boostベースの数値計算library opentissue が便利
64 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:25:23 ] CとC++の区別が付かない人がいるのか そんな人がCとC++を使ったら「CっぽいC++」と「C++」を書くんだろうな
65 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:56:22 ] 逆だろ。CとCっぽいC++じゃね。
66 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:13:29 ] ビャーンの本では .h を使ってるという理由だけで .h を使ってる。 boostのfaqに書いてある理由も理解できるので、別に .hpp に嫌悪感を抱くこともない 拡張子ネタとは関係ないけど、いくらビャーンの本で推奨されてもさすがにプログラミング環境でプロポーショナルフォントを使うのはナイ
67 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:19:58 ] そうか? 普通にプロポーショナルフォントを使っているが。
68 名前:デフォルトの名無しさん [2008/05/13(火) 10:51:26 ] boost::formatに関する質問です。 Boost1.3.4.1を使用しているのですが、formatのparseメソッド(※)は使わない方がいいのでしょうか? ※宣言部分のコメントには「resets buffers and parse a new format string」とあり、コンストラクタでコールされています。 動作ですが、 boost::format fmt( "abcd %1$s" ); fmt % 1; std::cout << fmt << std::endl; fmt.parse( "efgh %1$s" ); fmt % 2; std::cout << fmt << std::endl; とすると出力が abcd 1 2 となってしまいます。
69 名前:デフォルトの名無しさん [2008/05/13(火) 10:52:22 ] (続き) 一応、 @.\boost\format\parsing.hpp の400行目(parseメソッドの最初)に clear(); を追加。 A.\boost\format\format_implementation.hpp の行目(clearメソッドの最初)に prefix_.resize(0); を追加。 とすることで abcd 1 efgh 2 と出力されるようになるのですが、この修正だけで問題ないのか心配です。 (ちなみに1.3.5.0のソースもDLして確認してみましたが、該当するような処理はありませんでした。) まぁそもそもformatオブジェクトを使いまわしたところで大してパフォーマンス上がるわけではないんですがw 宜しく御願いします。
70 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:07:22 ] lambdaでPOD型扱うのに記述がめんどいんで #define mem_of_1(Type, MemberName) (&_1->*&Type::MemberName) #define mem_of_2(Type, MemberName) (&_2->*&Type::MemberName) みたいにして使ってるんだが、こういうの標準でも定義してもらえないものか・・・ オレ定義だと可搬性に欠けるのが難点で。
71 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:13:16 ] >>64 何か線を引きたいようだけど C++ コンパイラで便利な C という位置づけもあるんじゃないか。 抽象化にこだわって変なソース書く人もいるわけだろ? ようはスマートに処理をこなせるかということではないかな。
72 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:13:23 ] >>66-67 できればプロポーショナルフォントを使いたいが、 そこら辺のフォントだとプログラミングには使いづらい。 ピリオドやカンマ、セミコロンが小さすぎる。ゼロには斜線が欲しい。 どこかプログラマのためのプロポーショナルフォントなんて出してくれないものか。
73 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:49:38 ] >>70 boost-devel ML にコード投稿したら 多分とりこんでもらえる
74 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:15:20 ] >>70 ttp://www.boost.org/doc/libs/1_35_0/doc/html/lambda/le_in_details.html#lambda.members_variables_as_targets でがまんしる
75 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:11:19 ] >>72 VC6とかに入ってるFONTEDITで自分で作ればいい。 90文字程度作ればあとはフォントリンクして終わりだから簡単だぞ。
76 名前:75 mailto:sage [2008/05/13(火) 18:32:39 ] ごめん、Win環境限定ならね。
77 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:02:53 ] プロポーショナルフォントでプログラムに困るようなうんこ環境は Windows だけなので問題ない。
78 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:23:30 ] つまんね
79 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 07:18:51 ] >>71 CっぽくてもC++で作られたライブラリはCじゃ使えないから線引きは必要だ
80 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:47:56 ] Emacs使いな人、もしいたらこれでboost使っても 補完が働くか試してみないか? ttp://cedet.sourceforge.net/intellisense.shtml
81 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:37:45 ] #include <boost/array.hpp> #include <boost/serialization/serialization.hpp> struct S { boost::array<int, 3> data; private: friend class boost::serialization::access; template<class Archive> void serialize(Archive& ar, unsigned int ver) { ar & data.c_array(); } }; ttp://hw001.gate01.com/eggplant/tcf/cpp/boost_serialization.html#array ここを見て、boost::array.c_array()で生の配列を取り出してシリアライズしようと思ったのですが、 error C2679: 二項演算子 '&' : 型 'int *' の右オペランドを扱う演算子が見つかりません (または変換できません)。 というエラーが出てしまいました。 どうやればシリアライズできますか?
82 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:56:44 ] ar & data.elems;でどうよ。
83 名前:81 mailto:sage [2008/05/20(火) 13:03:27 ] >>82 thx コンパイル通りました。 データがpublicに置いてあるとは盲点でした。 連続で申し訳ないですが、もう1つ質問させて下さい。 Let's Boostで解説されているフルインストールをしたんですが、 ライブラリを必要とするboostを使ったものをビルドするとリンクエラーが出てしまいます。 例えば、 ttp://www.kmonos.net/alang/boost/classes/serialization.html このサンプルをビルドすると、 a.obj : error LNK2001: 外部シンボル ""protected: __thiscall boost::archive::basic_text_iprimitive<class std::basic_istream<char,struct std::char_traits<char> > > ::~basic_text_iprimitive<class std::basic_istream<char,struct std::char_traits<char> > >(void)" (??1?$basic_text_iprimitive@V?$basic_istream@DU?$char_traits@D@std@@@std@@@archive@boost@@IAE@XZ)" は未解決です。 といったa.objでのerror LNK2001が7個(a.objはサンプルソースをコピペした.cpp) libboost_serialization-vc80-mt-gd-1_34_1.lib(basic_serializer_map.obj) : error LNK2001: 外部シンボル ""__declspec(dllimport) public: __thiscall std::_Container_base::~_Container_base(void)" (__imp_??1_Container_base@std@@QAE@XZ)" は未解決です。 といったlibboost_serialization-vc80-mt-gd-1_34_1.libでのerror LNK2001が12個出ます。 libboost_serialization-vc80-mt-gd-1_34_1.libでエラーが出るということは、 ライブラリへのパスが通ってないわけじゃないと思うんですが、原因はどこにあるのでしょうか?
84 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:38:03 ] CRTの設定(静的LIBかDLLか)が食い違っているとそんなエラーが出た気がする。
85 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:38:55 ] VC2008でビルドするためのパッチを当てる必要があるかもしれない気がする。
86 名前:83 mailto:sage [2008/05/21(水) 08:34:22 ] >>84 いろいろ変えてみたら、/MTでlibboost_serialization-vc80-mt-gd-1_34_1.libでのエラーが消えましたが、 a.objでのエラー7個が残ったままです。 >>85 すみません、詳しくお願いします。 環境はVC2008EEです(書き忘れてましたすみません)。
87 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:39:25 ] >>86 www.nabble.com/Preliminary-0.9.0-tarballs---VC++-2008-Express-td14142470.html
88 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:41:54 ] >>80 たしか設定済みmeadowに入ってたよね meadowとVisual Studio組み合わせられると便利なんだけどね
89 名前:83 mailto:sage [2008/05/21(水) 14:38:36 ] thx よく理解しないまま、 www.nabble.com/Re%3A-Preliminary-0.9.0-tarballs---VC%2B%2B-2008-Express-p14161224.html に書かれているコードをそれぞれのファイルの末尾に追加してみました。 そして、例のサンプルをビルドしたらエラーは、 C:\Library\boost_1_34_1\boost/config/compiler/visualc.hpp(180) : fatal error C1189: #error : "Compiler not supported or configured - please reconfigure" の1つになりました。 うーん、自分の知識が足りないか・・・。
90 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:51:34 ] >>89 おそらくVC8の設定でライブラリをビルドしてしまっているから VC9EEの設定で構築しなおす必要がある。 そのURLに載っているファイル4つを編集してbjam --toolset=msvc-9.0すればいい。 >ファイルの末尾に追加 差分の見方がわからないならdiff unifiedでぐぐれ つーか1_35_0使えばいいんじゃないのか?
91 名前:83 mailto:sage [2008/05/21(水) 21:10:39 ] >>90 1_35_0を入れたら、すんなりビルドできました。 最新版を確認するべきだったorz ありがとうございました。
92 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:55:48 ] BGLを使い始めたのですが、adjacency_listについて質問があります。 adjacent_vertices()は、adjacency_iteratorのpairを返すのですが、 このイテレータはSTLのRandomAccessIterator要件を満たすと ドキュメントに書いてあるのですが、以下のコードのように イテレータに加算すると、コンパイルが通りません。 これは、私のコードに問題があるのでしょうか? // VertexProp, EdgePropは適当に定義 typedef adjacency_list<setS, vecS, undirectedS, VertexProp, EdgeProp> Graph; Graph G; // Gに頂点やエッジを追加してグラフを作成 // vはGの1頂点で、隣接する頂点は複数個存在 tie(ai, ae) = adjacent_vertices(v, G); vertex(*(ai+1), G); // コンパイルエラー ちなみに、環境は以下の通りです。 boost: 1.34.1 コンパイラ: GCC 4.2.3
93 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:20:21 ] >このイテレータはSTLのRandomAccessIterator要件を満たす どこに書いてあります? OutEdgeList を setS で設定しているので, RandomAccessIterator の要件は満たさないと思いますよ.
94 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:06:16 ] >>93 www.boost.org/doc/libs/1_35_0/libs/graph/doc/adjacency_iterator.html のMEMBERS OFの項に、 The adjacency iterator type implements the member functions and operators required of the Random Access Iterator concept, except that the reference type is the same as the value_type so operator*() returns by-value. と記述があるのです。この説明はadjacency_iterator_generator::typeに ついてのものだと思っていたのですが、勘違いでしょうか? もう一度ドキュメントを読み返してみたら、MODEL OFの項に The adjacency iterator adaptor (the type adjacency_iterator_generator<...>::type) is a model of Multi-Pass Input Iterator . と記述されていました。これならば、operator+()が定義されていなくても 当然なのですが、ちょっと混乱しています。
95 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:13:04 ] >>94 adjacency iterator adaptor は out edge iterator を adapt して operator* の動作を edge の target を返す動作に書き換えるだけだと思います. なのでそのドキュメントは間違っているのではないかと思います. adjacency iterator adaptor はベースになっている out edge iterator が -Multi-Pass Input Iterator なら Multi-Pass Input Iterator -Forward Iterator なら Forward Iterator -(ry という具合に,単にベースの out edge iterator が どの concept の model かを投影するだけ,というのが正しいのではないかと.
96 名前:95 mailto:sage [2008/05/25(日) 10:14:21 ] >>94 それから adjacency_list の adjacency_iterator は 別に adjacency_iterator_adaptor で実装されているとは限らないので, 読むべきドキュメントは adjacency_iterator_adaptor のドキュメントではなくて あくまで adjacency_list のドキュメントかと思います. ただ, adjacency_list において adjacency_iterator と out_edge_iterator が どの iterator concept のモデルなのかの関係については, ↑の議論が踏襲されるのが自然とは思います. そして現に, Adjacency List のドキュメント www.boost.org/doc/libs/1_35_0/libs/graph/doc/adjacency_list.html では, "The adjacency_iterator models the same iterator concept as out_edge_iterator. " と 書いてあります.
97 名前:95 mailto:sage [2008/05/25(日) 10:20:15 ] なので結論としては, >>92 で adjacency_list の OutEdgeList テンプレートパラメタに setS を指定しているので, out_edge_iterator は Bidirectional Iterator concept のモデルになり, 従って adjacency_iterator も Bidirectional Iterator concept のモデルなので, >>92 のランダムアクセスではコンパイルが通らないのだと思います.
98 名前:92 mailto:sage [2008/05/25(日) 13:45:24 ] 詳細にわたって解説していただきありがとうございます。おっしゃる通り、 まずadjacency_listの解説をよく読むべきでした。 OutEdgeListにsetSを使っているのは、エッジの重複を許したくないと いうのが理由でした。グラフを読み込む際にエッジの重複をチェック するようにして、OutEdgeListにはRandomAccessIteratorにするように すればいいのかとも思いますが、そうするとエッジに対する各操作の 時間複雑度も変わってきてしまい、なかなか悩みどころですね。 よく考えてアルゴリズムを実装します。
99 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:38:48 ] なんか最近の.NETの中身見てると、Boostが隠ぺいされてそうな雰囲気がするな
100 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:44:17 ] 時代がBoostに追い付いてきたって事か
101 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 21:59:24 ] VC++2008EEでboostを使ってみようとboost_1_35_0_setup.exeを使ってインストールしました。 しかし実際に使ってみると「定義されていない識別子です。」と言うエラーが出てコンパイル出来ません。 パスが通っていないのかと思い、以下のように通してみましたが駄目でした。 インストールしたライブラリのタイプ(?)はマルチスレッドとマルチスレッドデバックのみです。 実行ファイルパス…C:\Program Files\boost\boost_1_35_0\bin インクルードファイル…C:\Program Files\boost\boost_1_35_0 ライブラリファイル…C:\Program Files\boost\boost_1_35_0\lib
102 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:02:07 ] 問題が起きる最小限のソースコードplz
103 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:30:24 ] エラーメッセージくらい貼ろうよ
104 名前:101 mailto:sage [2008/06/01(日) 23:00:03 ] すみません、boost::の付け忘れが原因でしたorz
105 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 01:07:46 ] 微妙にすれ違いだけど、Lokiってあんまり使われてないのかな。
106 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:33:20 ] 先駆的なライブラリで、(in "Modern C++ Design") あれの機能は他に取り込まれているから。
107 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:19:38 ] おお!そうなんだ。取り込まれ先はBoost?
108 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:35:06 ] 今日初めてBoostを導入してSVNからのビルドも一応出来たんだけど、 Bjam+MSVC9でビルドに数時間掛かる。 コマンドプロンプトを見ると、暫く止まって・急に動いての繰り返しでCPUメータを見ても殆ど動いてない。 CPUを100%使い切って構わないのでさっさとビルドを済ませるオプションはありませんか?
109 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:46:29 ] HDDがボトルネックという可能性は?
110 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:50:07 ] ボトルネックというより不調発生してトライ&エラー多発してるんでは?
111 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:37:51 ] HDDはAHCI接続のWD7500AAKSで、空き容量も110GB程度あります。 CPUはCore2Quad 3GHz、メモリは8GBです。 トライ&エラーというとコマンドプロンプトはWarningの嵐ですが、どこかミスしているのでしょうか。 ビルドオプションは bjam --toolset=msvc -a link=static,shared threading=multi release debug stage ビルド環境はVS2008EE SP1beta+Windows SDK 6.0.6001.18000.367です。 試しに今もう一度ビルドしていますが、20時32分に最初のライブラリが出来て 21時24分の時点で出来上がったライブラリ数は21、21時36分現在は49です。
112 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:49:14 ] >>111 監視ログにHDDの不調でてないか?
113 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:55:19 ] >>111 core2Quad 2,4G 2Gbyteだけど全然かからなかったなあ。 今bin.v2とstageタイムスタンプ見たら10分ぐらいしか幅がない。 CPUメータ上がらないのは変だね。ウイルス対策ソフトとか遅くないか?
114 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:57:24 ] Event Viewerを見てもそれらしきエラーはありません。 VS2008EEをGUIで立ち上げて他のプロジェクトをビルドするときは4コアを100%使い切って 数分で終わるのですが・・・。22時53分現在のビルド数は102個、大量のWarningはC4819(ソースの文字コード絡み?)です。 動作的にはC4819大量発生→20~30秒程沈黙の繰り返しで、HDDへのアクセスは常に続いていますが動作が散発的です。 セキュリティ関係はVista標準のFirewallのみでDefenderは切ってあります。 Boostの本題と関係無い話でスレを潰すのもあまり好ましくないと思いますので、 似た事例が無いかネット上を探してみます。
115 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:59:14 ] ビルド終わりました。 214ファイルで4時間15分・・・orz
116 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:04:34 ] SVNクライアントの設定が変なんじゃね 逐一リポジトリの最新版チェックしてるとか
117 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:50:21 ] set CL=/wd4819 環境変数CLに登録しておくと文字コードの警告表示されなくてすむよ
118 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:23:24 ] それより警告の原因をどうにかしたほうが良いんじゃないかな。 文字が化けてそれ以降のコードが滅茶苦茶になってた事があったから。
119 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:43:08 ] >>117 有難うございます。感謝感激です。 CLに/wd4819をセットしたらビルドが22分で終わりました。CPU使用率も30%前後まで上がりました。 大量のC4819が原因だったみたいです。 警告の原因は多分これでしょうか。 ネットで調べてみるとVisual StudioにはUTF-8Nを読めずC4819を誤検出するバグがあるらしく、 一部のファイルをUTF-8で保存し直せば黙るみたいです(まだ試していません)。 ttp://www.ccm.media.kyoto-u.ac.jp/~aoyama/index.php?Note%2FPrograming%2FWin32#u5a7e582
120 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:10:33 ] ビルド時の標準出力はファイルにリダイレクトしとかない?
121 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:26:23 ] grepしないと不安だよね。