5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Boost総合スレ part9

1 :デフォルトの名無しさん:2010/05/28(金) 11:49:47
過去スレ
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 :デフォルトの名無しさん:2010/05/28(金) 11:51:08
■関連書籍■
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 :デフォルトの名無しさん:2010/05/28(金) 11:51:54
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 :デフォルトの名無しさん:2010/05/28(金) 21:38:34
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 :デフォルトの名無しさん:2010/05/29(土) 22:02:12
ublas::vectorには==演算子が定義されていないのでしょうか?

6 :4:2010/05/30(日) 10:57:08
>>4
fiber\build\Jamfile.v2の
14行目の import pyutils ; を消す。
29行目の [ pyutils.linkage ] を "WindowsPE" に変更。
53行目の [ pyutils.architecture ] を "i386" に変更。
(pyutils.py の実行結果を直で書いた・・・)

で解決しました。

7 :デフォルトの名無しさん:2010/05/31(月) 11:27:35
#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 :7:2010/05/31(月) 11:47:01
いろいろ試してみたところ
> io::stream_buffer<io::array_source> sb(io::array_source(buf));
が関数プロトタイプと解釈されている事が原因のようです。
これは言語的に正しい解釈なのでしょうか?

9 :デフォルトの名無しさん:2010/05/31(月) 20:37:37
>>8
Yes.
Effective STL に載ってる有名な落とし穴。

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

11 :デフォルトの名無しさん:2010/06/07(月) 15:35:41
すみません質問です。

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 :デフォルトの名無しさん:2010/06/07(月) 16:55:39
toolset=msvc-9.0

13 :デフォルトの名無しさん:2010/06/07(月) 17:33:04
うおおおできたぁあああああああ!!!

有難うございます助かりましたm(_ _)m

14 :デフォルトの名無しさん:2010/06/08(火) 01:50:23
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 :デフォルトの名無しさん:2010/06/09(水) 03:06:45
質問お願いします。

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 :デフォルトの名無しさん:2010/06/09(水) 03:08:19
A=[B^t C^t]^t ですね。すみませんでした。

17 :デフォルトの名無しさん:2010/06/09(水) 03:49:15
ベクトルA,B,C と行列Xになんの関係もないじゃん。

18 :デフォルトの名無しさん:2010/06/09(水) 07:26:59
そうですね。A,B,CとX,Y,Z,Wの間には関係がないです。
B,CをもとにA、Y,Z,WをもとにZをそれぞれ定義したいという感じです。

19 :デフォルトの名無しさん:2010/06/09(水) 19:48:55
>>15
ublas使うなら ttp://d.hatena.ne.jp/blono/archiveを1から読むといいよ
15が聞きたいことも頻繁にやってる(projectとかsliceとか)

20 :デフォルトの名無しさん:2010/06/11(金) 01:06:06
15です。
そのサイトは非常に参考にさせて貰ってます。

たぶんですけどsliceからのswapでいけるのかなぁ〜と考えてます。
ともかく色々試してみます。質問に答えてくれてありがとう。

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

22 :デフォルトの名無しさん:2010/06/12(土) 21:46:38
static

23 :デフォルトの名無しさん:2010/06/12(土) 22:40:53
http://www.boost.org/doc/libs/1_43_0/more/getting_started/windows.html#library-naming

24 :デフォルトの名無しさん:2010/06/17(木) 00:54:23
>>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 :デフォルトの名無しさん:2010/06/21(月) 20:29:21
weak_ptrってshared_ptrが無効かどうか知る場合に使えばいいですか?



26 :デフォルトの名無しさん:2010/06/21(月) 20:31:26
>>25マルチすんな

27 :デフォルトの名無しさん:2010/06/21(月) 21:29:27
何が悪いんだよ
おまえ goto 有害説にしか見えないぜ

28 :デフォルトの名無しさん:2010/06/22(火) 08:39:32
>>25
いいえ

29 :デフォルトの名無しさん:2010/06/22(火) 10:58:33
>>26
ごめんなさい・・・
スルーされたもんで

30 :デフォルトの名無しさん:2010/06/22(火) 15:50:16
>>29
そんな言い訳が通用したらマルチは存在しない。
常識で考えればちゃんと取り下げてから来いよ。


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

32 :デフォルトの名無しさん:2010/06/23(水) 18:26:38
p.use_count() はともかく

if (shared_ptr<Hoge> p = wp.lock()) {
...
}

あたりはかなり典型的かつ有用な idiom のような?

33 :デフォルトの名無しさん:2010/06/23(水) 20:36:20
ブーリアンコンテキストでチェックするのは普通でしょ
そのためにsafe boolが定義されてるんだから

use_count()はデバッグやテストのためであって
製品版では使うなとドキュメントに書いてあったはず

34 :デフォルトの名無しさん:2010/07/02(金) 17:48:50
へえ

35 :デフォルトの名無しさん:2010/07/07(水) 10:17:00
ublasって
純粋なCと速度はあんまり変わりないの?

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

36 :デフォルトの名無しさん:2010/07/07(水) 10:36:39
純粋なCってなんだよ
この世には不純なCがあるのか?

37 :デフォルトの名無しさん:2010/07/07(水) 11:30:27
全てはアセンブリ言語に変換・・・アセンブルされ、リンクし、バイナリは天に召される。
動けわがプログラムよ!

38 :デフォルトの名無しさん:2010/07/07(水) 11:53:17
天に召されたらうごかないんじゃね

39 :デフォルトの名無しさん:2010/07/07(水) 15:04:32
天はCPUなり

40 :デフォルトの名無しさん:2010/07/07(水) 15:13:58
三途のバスを越え、閻魔CPUの裁きが下るそのとき、
あなたの運命は定まるでしょう。

41 :デフォルトの名無しさん:2010/07/09(金) 10:47:13
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 :デフォルトの名無しさん:2010/07/09(金) 11:05:23
エスケープシーケンス
std::string::c_str()
まずC++の基礎を何とかしてください。

43 :デフォルトの名無しさん:2010/07/09(金) 11:21:56
ありがとうございます。一応コンパイル通りました
results.str(0).c_str()
こんなのがあるなんて全然知りませんでした。

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

45 :デフォルトの名無しさん:2010/07/09(金) 14:08:24
\→\\

46 :デフォルトの名無しさん:2010/07/09(金) 14:14:35
>>45
ありがとうございました
一見\で\が文字化されそうですね

47 :デフォルトの名無しさん:2010/07/09(金) 14:54:13
簡単さならxpressiveがヘッダファイルだけで済んで手軽
Static版の文法覚えちゃえば処理速度も期待できる
ただしコンパイル時間は延びる

48 :Regex:2010/07/10(土) 01:03:17
ぼくもほめて(´;ω;`)

49 :progress_display:2010/07/10(土) 05:24:22
まだまだ未熟だな。

50 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:51:21
ublasは中身替えられるから
ATLASなどを使えばSIMD対応で速いと聞く
ただATLASのコンパイルという壁が・・

51 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:17:03
regexはユーザーが入力した正規表現をそのまま渡しても平気かな?セキュリティーホールになったりしない?

52 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 10:30:03
Xpressive VC2008だと山のように警告が出る

53 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:17:27
そうか?型の整合性さえ取れれば何も言われないけどな
山のようにって言っても一部の警告がテンプレートの展開で連鎖してるんだろ

54 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:54:14
Boost.Xpressiveサイコー
でも標準入りを果たしたStd.Regexの汎用性には負ける。



55 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:09:26
RegexってインタプリタパターンとかDSLになるん?

56 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 20:18:20
Regexはインタープリタ
XpressiveはTMP、インタープリタ、両対応。

57 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 22:54:07
>>55
> インタプリタパターン
> DSL
って何?パターン?
よく知らないんだけど、正規表現の業界用語?


58 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 23:01:35
>>57
デザインパターン

59 :57:2010/07/11(日) 23:49:52
>>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 :デフォルトの名無しさん:2010/07/12(月) 08:01:49
> DSL
Domain Specific Language
分野特化言語

61 :デフォルトの名無しさん:2010/07/12(月) 10:30:16
>>60
ありがとう。


62 :デフォルトの名無しさん:2010/07/12(月) 19:46:25
Interpreter パターンとか Visitor と Composite 組み合わせて ParseContext 作っただけにしか見えないわ

63 :デフォルトの名無しさん:2010/07/13(火) 20:33:35
実装詳細を見てわかった気になるヤツって多いよね

64 :デフォルトの名無しさん:2010/07/17(土) 01:11:16
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 :デフォルトの名無しさん:2010/07/17(土) 01:29:37
誰か>>64の解決策教えてよ。友達いないんだ。さみしいの。

66 :デフォルトの名無しさん:2010/07/17(土) 06:20:17
http://lists.apple.com/archives/carbon-dev/2006/Aug/msg00400.html
これか、違うか?

67 :デフォルトの名無しさん:2010/07/17(土) 23:47:39
それっす。有り難う。

68 :デフォルトの名無しさん:2010/07/20(火) 11:55:02
OSXと関係ないが、VC++は<c**>でincludeしてもstdにならないんだよな確か

69 :デフォルトの名無しさん:2010/07/20(火) 15:14:39
>>68
標準関数はstdに入ってるよ
同時にグローバル名前空間にもぶちまかれるが

70 :デフォルトの名無しさん:2010/07/22(木) 11:56:17
http://www.atmarkit.co.jp/news/200909/07/lltv02.html
boostより抽象度は高そうなんだが

71 :デフォルトの名無しさん:2010/07/22(木) 13:21:34
>言語と戯れよう
プログラミング自体が目的になってる方は死んで下さい

72 :デフォルトの名無しさん:2010/07/22(木) 14:37:08
VC++2010だと、BOOST_SCOPE_EXITとかBOOST_FOREACH使うとクラスビューの
関数解析結果がおかしくなるんだが・・・

73 :デフォルトの名無しさん:2010/07/22(木) 15:22:58
>>71
MPLの変な文法おぼえるよりlisp覚えたほうが得
どうせ生成されるCは同じなんだし

多分、動く奴はこれ

http://homepage.mac.com/naoki.koguro/prog/dyncomp/index-j.html

74 :デフォルトの名無しさん:2010/07/22(木) 15:27:56
どこの馬の骨ともしれぬジャップがでっち上げた俺ライブラリなぞ論外

75 :デフォルトの名無しさん:2010/07/22(木) 16:54:25
そういわずに育ててやれよ

76 :デフォルトの名無しさん:2010/07/22(木) 17:47:33
これってジェネレーラーはLispでかかれてるんかいな?
落としてみたけどS式書いてあるファイルがみつからんよ??

77 :デフォルトの名無しさん:2010/07/23(金) 02:56:10
本当の本体はGaucheのソースの中らしい

78 :デフォルトの名無しさん:2010/07/23(金) 16:27:02
Gaucheのソースを解凍
lib/cgen
の下

79 :デフォルトの名無しさん:2010/07/23(金) 16:28:51
なるほど、サンキュ!

80 :デフォルトの名無しさん:2010/07/23(金) 16:37:18
Gaucheソース
ext/uvector
のMakefile
に使用例

81 :デフォルトの名無しさん:2010/07/24(土) 12:02:15
http://alohakun.blog7.fc2.com/blog-entry-586.html
lispから読めるCを生成する別な方法

21 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)