1read 100read
2011年10月1期プログラムBoost総合スレ part9 TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
関数型言語Part5
アセンブラ初心者スレッド
形態素解析と日本語処理
C言が全く分からない俺を神が救ってくれるスレ


Boost総合スレ part9


1 :10/05/28 〜 最終レス :12/01/09
過去スレ
Part 8 http://pc12.2ch.net/test/read.cgi/tech/1251446016/
part 7 http://pc12.2ch.net/test/read.cgi/tech/1232367742/
part 6 http://pc11.2ch.net/test/read.cgi/tech/1207749841/
part 5 http://pc11.2ch.net/test/read.cgi/tech/1192662575/
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/

2 :
■関連書籍■
Boost C++をチューンアップする最先端ライブラリ
http://www.amazon.co.jp/exec/obidos/ASIN/4894714191/
Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798017043/
Beyond The C++ Standard Library
http://www.amazon.co.jp/exec/obidos/ASIN/0321133544/
C++ Template Metaprogramming
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/
The Boost Graph Library
http://www.amazon.co.jp/exec/obidos/ASIN/0201729148/
■関連スレ■
C++相談室 part81
http://pc12.2ch.net/test/read.cgi/tech/1273407971/
C++0x 9
http://pc12.2ch.net/test/read.cgi/tech/1269623636/

3 :
Boost Sandbox
https://svn.boost.org/trac/boost/wiki/BoostSandbox
Boost Vault
http://www.boostpro.com/vault/
Loki
http://sourceforge.net/projects/loki-lib/
JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
POCO, the C++ Portable Components
http://www.appinf.com/poco/info/
http://sourceforge.net/projects/poco/
The unofficial BCB Boost patches
http://bcbboost.sourceforge.net/

4 :
boost.fiber をビルドしたのですが、以下のエラーがでてビルドできません。
解決策を教えて下さい。
C:/lib/boost/boost_1_42_0/libs/fiber/build\pyutils.jam:2: in load
rule PYTHON_IMPORT_RULE unknown in module pyutils.
C:/lib/boost/boost_1_42_0/tools/build/v2/kernel\modules.jam:283: in modules.impo
rt
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:903: in import
libs\fiber\build\Jamfile.v2:14: in modules.load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:313: in load-jamfile
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:62: in project.load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:763: in project.use
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:89: in load-used-proj
ects
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:73: in load
C:/lib/boost/boost_1_42_0/tools/build/v2/build\project.jam:168: in project.find
C:/lib/boost/boost_1_42_0/tools/build/v2\build-system.jam:553: in load
C:\lib\boost\boost_1_42_0\tools\build\v2/kernel\modules.jam:283: in import
C:\lib\boost\boost_1_42_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-buil
d
C:\lib\boost\boost_1_42_0\boost-build.jam:17: in module scope

5 :
ublas::vectorには==演算子が定義されていないのでしょうか?

6 :
>>4
fiber\build\Jamfile.v2の
14行目の import pyutils ; を消す。
29行目の [ pyutils.linkage ] を "WindowsPE" に変更。
53行目の [ pyutils.architecture ] を "i386" に変更。
(pyutils.py の実行結果を直で書いた・・・)
で解決しました。

7 :
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/device/array.hpp>
#include <iostream>
namespace io = boost::iostreams;
char buf[] = {1, 2, 3, 4, 5};
#if 0
// (A)
io::array_source src(buf);
io::stream_buffer<io::array_source> sb(src);
#else
// (B)
io::stream_buffer<io::array_source> sb(io::array_source(buf));
#endif
std::istream s(&sb);
(B)の場合はコンパイルが通るのですが、(A)の場合だと
> C2664: 'std::basic_istream<_Elem,_Traits>::basic_istream(std::basic_streambuf<_Elem,_Traits> *,bool)' : 1 番目の引数を
> 'boost::iostreams::stream_buffer<T> (__cdecl *)(boost::iostreams::array_source)' から 'std::basic_streambuf<_Elem,_Traits> *' に変換できません。
となりますが、理由がわかりません。
array_sourceを直接渡すか変数を介すかで、何故違いが出るのでしょうか?
VC++2010 EE + boost 1.43.0

8 :
いろいろ試してみたところ
> io::stream_buffer<io::array_source> sb(io::array_source(buf));
が関数プロトタイプと解釈されている事が原因のようです。
これは言語的に正しい解釈なのでしょうか?

9 :
>>8
Yes.
Effective STL に載ってる有名な落とし穴。

10 :
>>9
io::stream_buffer<io::array_source> sb(io::array_source buf);
という風に解釈されるんですね。
遅くなりましたがありがとうございました。

11 :
すみません質問です。
VisualStudioの2008と2010が入っている環境でboostをビルドしたところ、msvcのバージョン指定しない場合は「〜vc100〜.lib」等が作成されました
VS2010でサンプルアプリケーションを作って実行したところ正常動作を確認したのですが、欲しかったのはVS2008用のため、msvcのバージョンを指定してビルドしたのですが、
「〜vc〜.lib」というファイルが出来あがり、VS2008でサンプルアプリケーションを作って実行したところ「〜vc90〜.lib」が見つからずエラーとなりました
古いバージョンのビルドでバージョン表記を付けてビルドするにはどうすればいいんでしょうか。
参考にしたURLこちらで、バージョン指定のビルド時は「--toolset=msvc-9_0」を指定しました
http://www.kmonos.net/alang/boost/build.html

12 :
toolset=msvc-9.0

13 :
うおおおできたぁあああああああ!!!
有難うございます助かりましたm(_ _)m

14 :
bjam toolset=msvc-8.0 variant=debug,release link=static threading=multi runtime-link=static stage
bjam toolset=msvc-9.0 variant=debug,release link=static threading=multi runtime-link=static stage
bjam toolset=msvc-10.0 variant=debug,release link=static threading=multi runtime-link=static stage
ウチはこれで容量節約

15 :
質問お願いします。
ublasで
A=[B~t C^t]~t A,B,Cはベクトル
  Y 0 0
X=[0 Z 0 ]  X,Y,Z,Wは行列
  0 0 W
この時のB,CやY,Z,Wが存在していてそれを元に
AやXを作成したいのですが良い方法はありますでしょうか?s

16 :
A=[B^t C^t]^t ですね。すみませんでした。

17 :
ベクトルA,B,C と行列Xになんの関係もないじゃん。

18 :
そうですね。A,B,CとX,Y,Z,Wの間には関係がないです。
B,CをもとにA、Y,Z,WをもとにZをそれぞれ定義したいという感じです。

19 :
>>15
ublas使うなら ttp://d.hatena.ne.jp/blono/archiveを1から読むといいよ
15が聞きたいことも頻繁にやってる(projectとかsliceとか)

20 :
15です。
そのサイトは非常に参考にさせて貰ってます。
たぶんですけどsliceからのswapでいけるのかなぁ〜と考えてます。
ともかく色々試してみます。質問に答えてくれてありがとう。

21 :
ビルドしたライブラリ(.lib)の名前の後ろにつく文字列に、mtとmt-sという
2種類のものがあるのですが、どのような違いがあるのでしょうか?
mtというのは、VC++のランタイムライブラリ設定で"マルチスレッド"を
選んだからだと思うのですが、sという文字列の意味がわかりませんでした。
初歩的な質問かもしれないですが、教えてもらえるとうれしいです

22 :
static

23 :
http://www.boost.org/doc/libs/1_43_0/more/getting_started/windows.html#library-naming

24 :
>>21
VC++のランタイムライブラリ設定でいうなら
マルチスレッド libboost_…-mt-s
マルチスレッド デバッグ libboost_…-mt-sgd
マルチスレッド DLL libboost_…-mt
マルチスレッド デバッグ DLL libboost_…-mt-gd
ただし、このDLLというのはCランタイムのDLLのことなので
BOOST C++ ライブラリをDLLで使いたい人のために
boost_で始まるlib/dllも出力されるので
bjam toolset=msvc-10.0 --build-type=complete stage
すると5.8GBにもなるという

25 :
weak_ptrってshared_ptrが無効かどうか知る場合に使えばいいですか?

26 :
>>25マルチすんな

27 :
何が悪いんだよ
おまえ goto 有害説にしか見えないぜ

28 :
>>25
いいえ

29 :
>>26
ごめんなさい・・・
スルーされたもんで

30 :
>>29
そんな言い訳が通用したらマルチは存在しない。
常識で考えればちゃんと取り下げてから来いよ。

31 :
>>25
できるけど、普通shared_ptrはコンストラクタで初期化するのだし
そういうコードが必要になるような設計に問題があると思う
if (p != NULL) {...} がバグの温床だからやめようというのと同じで
if (p.use_count()) {...} ってのも関心しない
検索してもなかなか出てこないのには好ましくないから
人に見せるような綺麗なプログラムにはあまり出てこないという背景がある

32 :
p.use_count() はともかく
if (shared_ptr<Hoge> p = wp.lock()) {
...
}
あたりはかなり典型的かつ有用な idiom のような?

33 :
ブーリアンコンテキストでチェックするのは普通でしょ
そのためにsafe boolが定義されてるんだから
use_count()はデバッグやテストのためであって
製品版では使うなとドキュメントに書いてあったはず

34 :
へえ

35 :
ublasって
純粋なCと速度はあんまり変わりないの?
他のboostもコンパイルに時間かかるだけで実行時間は純粋なCとあまり変わりないの?

36 :
純粋なCってなんだよ
この世には不純なCがあるのか?

37 :
全てはアセンブリ言語に変換・・・アセンブルされ、リンクし、バイナリは天に召される。
動けわがプログラムよ!

38 :
天に召されたらうごかないんじゃね

39 :
天はCPUなり

40 :
三途のバスを越え、閻魔CPUの裁きが下るそのとき、
あなたの運命は定まるでしょう。

41 :
boost::regex hosii("hoge ?\(");//boost::reg_expression<char> regex = 正規表現;にするとできない。
boost::match_results<const char*> results;//←もうこの辺から::を押しても出てこない
boost::regex_search(data, results,hoge);
fputs(results.str(0), wfp);←ここでエラー
boostが全然できません
error C2664: 'fputs' : 1 番目の引数を 'std::basic_string<_Elem,_Traits,_Ax>' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
1> with
1> [ _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
キャストする

error C2440: '<function-style-cast>' : 'std::basic_string<_Elem,_Traits,_Ax>' から 'char' に変換できません。
1> with
1> [ _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
助けてください
簡単にC++で正規表現できるんじゃないんですか?VC++2008EE notCLI 正規表現で文字列取得して配列に入れたいだけです。どうすれば良いのでしょうか?

42 :
エスケープシーケンス
std::string::c_str()
まずC++の基礎を何とかしてください。

43 :
ありがとうございます。一応コンパイル通りました
results.str(0).c_str()
こんなのがあるなんて全然知りませんでした。

44 :
詰みました
boost::regex hosii(" *hoge *\(");←ここで止まります。ハンドルされていない例外ですと
boost::match_results<const char*> result;
boost::regex_search(data, results,hosii);
fputs(results.str(0).c_str(), wfp);
何が間違ってるのでしょうか?
エスケープシーケンスが正しくないかもしれませんみたいな警告が出てましたが何か間違ってますか?

45 :
\→\\

46 :
>>45
ありがとうございました
一見\で\が文字化されそうですね

47 :
簡単さならxpressiveがヘッダファイルだけで済んで手軽
Static版の文法覚えちゃえば処理速度も期待できる
ただしコンパイル時間は延びる

48 :
ぼくもほめて(´;ω;`)

49 :
まだまだ未熟だな。

50 :
ublasは中身替えられるから
ATLASなどを使えばSIMD対応で速いと聞く
ただATLASのコンパイルという壁が・・

51 :
regexはユーザーが入力した正規表現をそのまま渡しても平気かな?セキュリティーホールになったりしない?

52 :
Xpressive VC2008だと山のように警告が出る

53 :
そうか?型の整合性さえ取れれば何も言われないけどな
山のようにって言っても一部の警告がテンプレートの展開で連鎖してるんだろ

54 :
Boost.Xpressiveサイコー
でも標準入りを果たしたStd.Regexの汎用性には負ける。

55 :
RegexってインタプリタパターンとかDSLになるん?

56 :
Regexはインタープリタ
XpressiveはTMP、インタープリタ、両対応。

57 :
>>55
> インタプリタパターン
> DSL
って何?パターン?
よく知らないんだけど、正規表現の業界用語?

58 :
>>57
デザインパターン

59 :
>>58
Gang of Fourのdesign patternのこと?
インタプリタパターンなんてあった記憶が無いんだけど。
…あったし!!ごめん!
Interpreter パターン - Wikipedia
ttp://ja.wikipedia.org/wiki/Interpreter_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

60 :
> DSL
Domain Specific Language
分野特化言語

61 :
>>60
ありがとう。

62 :
Interpreter パターンとか Visitor と Composite 組み合わせて ParseContext 作っただけにしか見えないわ

63 :
実装詳細を見てわかった気になるヤツって多いよね

64 :
mac osx 10.6 xcode 環境で boost のインクルードパスをシステムインクルードの検索パスに追加してビルドすると、
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:80:0
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/i686-apple-darwin10/x86_64/bits/c++locale.h:80:
error: 'vsnprintf' is not a member of 'std'
などと言われて、コンパイルできません。
osx内のSDKのヘッダとboost のそれが競合してる見たい何だけど、どうやれば解決できませすか。

65 :
誰か>>64の解決策教えてよ。友達いないんだ。さみしいの。

66 :
http://lists.apple.com/archives/carbon-dev/2006/Aug/msg00400.html
これか、違うか?

67 :
それっす。有り難う。

68 :
OSXと関係ないが、VC++は<c**>でincludeしてもstdにならないんだよな確か

69 :
>>68
標準関数はstdに入ってるよ
同時にグローバル名前空間にもぶちまかれるが

70 :
http://www.atmarkit.co.jp/news/200909/07/lltv02.html
boostより抽象度は高そうなんだが

71 :
>言語と戯れよう
プログラミング自体が目的になってる方は死んで下さい

72 :
VC++2010だと、BOOST_SCOPE_EXITとかBOOST_FOREACH使うとクラスビューの
関数解析結果がおかしくなるんだが・・・

73 :
>>71
MPLの変な文法おぼえるよりlisp覚えたほうが得
どうせ生成されるCは同じなんだし
多分、動く奴はこれ
http://homepage.mac.com/naoki.koguro/prog/dyncomp/index-j.html

74 :
どこの馬の骨ともしれぬジャップがでっち上げた俺ライブラリなぞ論外

75 :
そういわずに育ててやれよ

76 :
これってジェネレーラーはLispでかかれてるんかいな?
落としてみたけどS式書いてあるファイルがみつからんよ??

77 :
本当の本体はGaucheのソースの中らしい

78 :
Gaucheのソースを解凍
lib/cgen
の下

79 :
なるほど、サンキュ!

80 :
Gaucheソース
ext/uvector
のMakefile
に使用例

81 :
http://alohakun.blog7.fc2.com/blog-entry-586.html
lispから読めるCを生成する別な方法

82 :
boost-buildと、boost-jamの関係を教えてください。

83 :
恋人

84 :
英語のドキュメント読んでましたが、よく分かりませんでした。
まじめにお願いします。

85 :
lover

86 :
boostjamはインタプリタ

87 :
gauche.cgen.cise
のコード読んでるんだが、これあったらboostいらないかもしれない

88 :
comp.lang.lispに書いてること信じるなら
thinlispの方がgauche.cgen.ciseよりすごいかもしれない
makefile *.hまで生成するっぽい

89 :
a

90 :
>>70
の使い方をまとめた
CiSE simple example
http://d.hatena.ne.jp/niitsuma/20081113/1281521109

91 :
1.44
Boost C++ Libraries
http://www.boost.org/

92 :
>>90
これデバッグはしやすい?

93 :
>>90
別にスレ建てたほうが注目してもらえるよ。
「S式でCを書くCiSEスレ」とかにすれば関数型ファンがすぐ集まるよ

94 :
適当なテンプレがあるなら、自分がスレ立てるけど

95 :
なんでCでこういうのむりやりやろうとするのか疑問だわ。
言語機能に組み込んで新言語つくりゃいいのに。

96 :
>>95
言語機能で提供すべきことと
言語自身を使って作るものの
単純明快な判断基準がウケたのがC
新基準を開拓に行くと出かけて帰りが遅いのがC++

97 :
lambdaが言語に組み込まれて良かったわ
ずっとboost.lambda使えっていわれたらどうしようかと思った

98 :
>>92
そのための
#line

99 :
>>95
lispの便利さを知ってしまうと他を使いたくなくなる
(コマンドラインgcc からVisualStudioに移ったぐらいの便利さがある)
しかし他から「成果はCかC++で納めてくれ」と言われることは多いらしく
cise とかthinlispとかこの手の試みがいろいろされてきたようだ

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
関数型言語Part5
アセンブラ初心者スレッド
形態素解析と日本語処理
C言が全く分からない俺を神が救ってくれるスレ