Boostを語れゴラァ part5
■ このスレッドは過去ログ倉庫に格納されています
0001BOOTS
2007/10/18(木) 08:09:35過去スレ
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/
0438デフォルトの名無しさん
2008/02/03(日) 02:46:57それ使うのが一番いいと思うぜ。
0439デフォルトの名無しさん
2008/02/03(日) 03:40:580440デフォルトの名無しさん
2008/02/03(日) 10:30:15メイヤーズの受け売りじゃないですか
0441デフォルトの名無しさん
2008/02/03(日) 10:31:55それ常識じゃないですか
>>434
警告レベル上げると非標準と出せることは
サッターがGotWでも言ってますよ
0442デフォルトの名無しさん
2008/02/03(日) 11:06:590443デフォルトの名無しさん
2008/02/03(日) 14:47:360444デフォルトの名無しさん
2008/02/03(日) 14:50:24Boost もテンプレートのみの範囲なら同様。
0445デフォルトの名無しさん
2008/02/03(日) 14:52:24BoostCon Call for Sessionsとかメール流れてるけど
0446443
2008/02/03(日) 17:26:04ありがとうございます。
STL は無条件で問題ないんですね。
Boost でライブラリを使ってスタティックリンクをして .DLL は作成可能でしょうか?
0447デフォルトの名無しさん
2008/02/03(日) 18:41:080449デフォルトの名無しさん
2008/02/03(日) 19:02:18でもxpressiveみたいな代替案もあるので、普通に使っている限りは要らないと思う。
0450デフォルトの名無しさん
2008/02/03(日) 19:28:05そういう場合でもWindowsだと普通はスタティックリンク版使うだろうってこと。
その辺の制御するマクロもなんかあった気がするが。
0451443
2008/02/03(日) 19:34:03.DLL は消していますので。
それをスタティックリンクして、自作のプログラムの .DLL をつくれるのかなぁと思ったもので;;;
1本の .exe が大きくなりすぎて、機能ごとに .DLL にしないと、Debug Build のブラウザ情報の書きだしに
時間が掛かって待ちきれないので;
0452デフォルトの名無しさん
2008/02/03(日) 19:51:15なぜ試さないのか。
0453443
2008/02/03(日) 21:37:15実験するだけでも難しかしいなぁと思って;
できるって教えて頂ければ何とか、チャレンジしたいと思います。
0454デフォルトの名無しさん
2008/02/03(日) 22:37:46ここで粘着してもスルーされるだけですよ。
0455デフォルトの名無しさん
2008/02/07(木) 15:57:22と長い間思っていたのですが、 boost::ref というのは
そういうときのためにあるのでしょうか?
内部状態を持ったまま幾つものコンテナをなめまわしたいとき,
pred (←第三引数)を渡すといちいちコピーが発生するより
参照で渡したいなぁと.
0456デフォルトの名無しさん
2008/02/07(木) 16:30:280457デフォルトの名無しさん
2008/02/07(木) 17:19:530458デフォルトの名無しさん
2008/02/07(木) 17:20:020459デフォルトの名無しさん
2008/02/07(木) 17:23:08サイズによって違うよ、銀は三枚のこともあるよ
0460デフォルトの名無しさん
2008/02/07(木) 19:36:060461デフォルトの名無しさん
2008/02/07(木) 20:20:440462デフォルトの名無しさん
2008/02/07(木) 20:28:070463デフォルトの名無しさん
2008/02/07(木) 20:29:49あとspiritも
0464デフォルトの名無しさん
2008/02/07(木) 20:37:270465デフォルトの名無しさん
2008/02/07(木) 21:41:42regex「ねーよ」
0466デフォルトの名無しさん
2008/02/07(木) 23:00:030467デフォルトの名無しさん
2008/02/08(金) 04:16:430468デフォルトの名無しさん
2008/02/08(金) 13:30:59そろそろC++も終わりと考えていいのかな?
0469デフォルトの名無しさん
2008/02/08(金) 14:42:020470デフォルトの名無しさん
2008/02/08(金) 15:00:31枯れないとC++標準として採用できないではないか。
0471デフォルトの名無しさん
2008/02/08(金) 21:55:570472デフォルトの名無しさん
2008/02/09(土) 14:39:41それでも更新が少ないって事はboostの開発者達は皆C++捨てて他の言語にいっちゃったって事じゃないのかなーとか思ったり
0473デフォルトの名無しさん
2008/02/09(土) 15:28:19の割にはレビューはそれなりに継続して行われてる気がするんだが。
0474デフォルトの名無しさん
2008/02/09(土) 16:34:47更新少ないのかな?
svn見る限りでは2月に入ってリビジョンは64上がってるんだが
0475デフォルトの名無しさん
2008/02/09(土) 16:42:45もしかしてCVSの方を見てるとか?
boostの開発はsubversionに移行しててCVSの方は更新止まってるからね。
0476デフォルトの名無しさん
2008/02/09(土) 20:04:20boosterの変態的嗜好を満足させる言語がほかにあるとは考えにくいがどうだろう。
0477デフォルトの名無しさん
2008/02/10(日) 00:22:550478デフォルトの名無しさん
2008/02/10(日) 01:44:11boots の間違いでした,って言え
0479デフォルトの名無しさん
2008/02/10(日) 08:48:090480デフォルトの名無しさん
2008/02/10(日) 12:00:50Debug版が作られないのですが、こういうものなのでしょうか?
コマンドラインはこうしています。
bjam -sTOOLS=msvc "-sBUILD=<runtime-build>release debug <runtime-link>dynamic <threading>multi" stage
0481デフォルトの名無しさん
2008/02/10(日) 12:04:10Linux で以下のように release かつ dynamic のライブラリをビルドしようとすると
debug と static の組み合わせもビルドして大量のライブラリができるけど,どこが
間違っているでしょうか? Boost は 1.34.0 です。
./bjam --toolset=gcc --prefix=/usr/local -sBUILD="release <runtime-link>dynamic" --with-regex install
436 名前:デフォルトの名無しさん 投稿日:2007/07/17(火) 01:26:03
>>435
Boost.BuildがV2になったんで-sBUILD消滅
<hoge>hageをhoge=hageにしてオプションとして渡せばおk
0482デフォルトの名無しさん
2008/02/10(日) 12:42:17bjam --builddir=builddir-vc9 --build-type=complete --toolset=msvc-9.0 stage >..\build.log
こんな風にしてます。
http://svn.windy.cx/Building/boost-trunk/
をチェックアウトして vc8.bat か vc9.bat をクリックすれば
ビルドできるようになってます。その後 crop.bat をクリックすれば
静的ライブラリ、動的ライブラリ、ヘッダを3つの*.cabファイルに回収します
外部リポジトリとして boost の trunk を指定しているので
チェックアウトにはめちゃくちゃ時間がかかると思います。
http://svn.windy.cx/index.php?boost
いちおうここにWindows用のバイナリをおいてみました。
0483482
2008/02/10(日) 12:44:353つの *.cab ができます。ICU なしでビルドするように
なってますので、必要なら適当にいじってください。
ためしにやってみたけど ICU 見つけてくれなかった(笑
まじめにやれ>俺
0484デフォルトの名無しさん
2008/02/10(日) 22:58:35DLL版があれば十分なので結局こうしました。
bjam --toolset=msvc-9.0 debug release --runtime-link=shared --
link=shared --threading=multi --without-python stage 2>&1 | tee h:\boost.log
0485デフォルトの名無しさん
2008/02/10(日) 23:43:22ソースとか全部追ってるの?
謙遜とかなしに、みんなどれくらいboostを掘り下げてるか教えて欲しい。
0486デフォルトの名無しさん
2008/02/10(日) 23:51:310487デフォルトの名無しさん
2008/02/11(月) 00:02:28さすがにBindとかFunctionとか簡単なラムダ式はそらで書けるけど。
0488デフォルトの名無しさん
2008/02/11(月) 00:20:03Graph勉強しようとしたけどワカンネ
0489デフォルトの名無しさん
2008/02/11(月) 00:23:470490デフォルトの名無しさん
2008/02/11(月) 01:16:27イテレータに比べてどんな事がうれしいんだろう
今のところ「イテレータより簡潔に書ける事がある」
位の理解しか出来てないっす
0491デフォルトの名無しさん
2008/02/11(月) 03:09:39組込配列とか、イテレータのpairを即興で作ったりとか。
俺自身はサンプル見ただけだけど、CStringとかそっちもRange化できるし。
0492デフォルトの名無しさん
2008/02/11(月) 03:50:100493デフォルトの名無しさん
2008/02/11(月) 05:21:180494デフォルトの名無しさん
2008/02/11(月) 06:23:570495デフォルトの名無しさん
2008/02/11(月) 09:40:33xpressive使ってる。
0496デフォルトの名無しさん
2008/02/11(月) 12:21:29regexとモロかぶってるw
しかし、ライブラリのコンパイル不要なのと
static regexが使える意外で、regexと何か
大きな違いがあるのだろうか?
0497デフォルトの名無しさん
2008/02/11(月) 12:26:460498デフォルトの名無しさん
2008/02/11(月) 12:28:02リンク不要といっても演算子によってフル展開されるから
総コンパイル時間は長くなる
0499デフォルトの名無しさん
2008/02/11(月) 15:41:15再帰処理が可能なのも大きい。
普通の正規表現では対応できない入れ子表現なんかも処理できる。
0500デフォルトの名無しさん
2008/02/11(月) 16:50:37VC++ 9とかg++ 4.1.1にBoost 1.34.1, range_exは1.0 (?)ですけど。
#include <istream>
#include <string>
#include <boost/algorithm/string/find.hpp>
#include <boost/range_ex/algorithm.hpp>
void f(std::istream& is)
{
using std::string;
string s;
getline(is, s);
string::iterator it = boost::find(s, ':'); //range_exのやつを呼びたい。
}
0501デフォルトの名無しさん
2008/02/11(月) 17:01:05なるほど。staticなら早いだろうなってのは
予想してたけど、表記のネストも可能になるんだ。
0502デフォルトの名無しさん
2008/02/12(火) 20:48:21python.numpy
をこれから使いまくろうと思ってる
0503デフォルトの名無しさん
2008/02/12(火) 23:42:49exe $(name) : ./$(name).cpp ;
exec $(name)-run : $(name) ;
}
local hogehoge = [ modules.peek : ARGV ] ;
hoge [ MATCH "^--name=(.*)" : $(hogehoge[2]) ] ;
bjam --name="projectname"
で実行時にターゲットを生成するルールhoge
これで使い捨てのコードをeditorのマクロで一発テストできるぞ!!
boost-jamって各種コンパイラ用のプリセットがある点以外はかなり貧弱にみえるけど
そうでもないの?皆使ってる??
0504503
2008/02/13(水) 00:07:56保存して忘れた頃に晒すとかしないでね
>>500
boost/algorithm/string/find.hpp内でusing boost::algorithm::findしているのが原因
ってのはわかるけど
解決策は「どちらか一方だけを使う」ぐらいしか思いつかない
でもまぁ捨てるとしたらrange_exの方かな…
同じようなものにovenがあるし
0505500
2008/02/13(水) 02:20:01boost名前空間へ引きづり出されているとは、知りませんでしたOTL。
問題のところは、std::findへ逃げました。
0506デフォルトの名無しさん
2008/02/15(金) 12:35:34cmakeとどっちが便利なんだろう
cmakeはドキュメントそろってるけどbjamにはない
0507デフォルトの名無しさん
2008/02/15(金) 16:47:320508デフォルトの名無しさん
2008/02/15(金) 16:52:470509デフォルトの名無しさん
2008/02/17(日) 21:20:32boost 1.341をダウンロードしてここを参考にしてコンパイルしたけど、
D:\Documents and Settings\habu\デスクトップ\boost_1_34_1\tools\build\v2/kernel/bootstrap.jam:82: in boost-build
IMPORT error: rule "import" unknown in module "modules."
D:\Documents and Settings\habu\デスクトップ\boost_1_34_1\boost-build.jam:9: in module scope
と言うエラーが出て先に進めません。
根本的に何か間違っているのでしょうか?
仕方ないので今は渋々インクルードファイルだけを使っていますが・・・。
0510デフォルトの名無しさん
2008/02/17(日) 21:22:54Visual C++6.0でWindows XPで動作させています。
0511デフォルトの名無しさん
2008/02/17(日) 21:26:330512デフォルトの名無しさん
2008/02/17(日) 21:32:590513デフォルトの名無しさん
2008/02/17(日) 21:43:10しまった・・・・まあいいや、本名じゃないし。
0514デフォルトの名無しさん
2008/02/18(月) 02:22:56vector<string> vecstr; に適当に値を代入して
trim( vecstr[0] );
だとダメ(trim.hpp:229 で no much function.)で
trim( vecstr.at(0) );
もダメだけど
string tmp =vecstr[0];
trim( tmp );
だと通ってしまう。これらってC++的には同じでないの?
(atは領域外だと例外投げるとかをのぞいて)
0515514
2008/02/18(月) 02:26:570516デフォルトの名無しさん
2008/02/18(月) 08:38:52それ以前に、trim(& vecstr[0])じゃないのか?
0517デフォルトの名無しさん
2008/02/18(月) 11:33:21public:
typedef boost::multi_array<double, 2> MyArray;
ある関数の中で
ある関数(){
int Arraylen
Ararylen=3
MyArray A( boost::extents[4],[Arraylen]);
}
とした場合Aと言う変数がこの関数の中で作られているので
どうグローバル化していいか分かりません。
ちなみに、この例ではArraylenの値がすぐ分かるように
なっていますが、自分のプログラムではこの値はその関数内
でしか分かりません。
0518デフォルトの名無しさん
2008/02/18(月) 12:43:19typedef boost::multi_array<double, 2> ;
MyArray A;
ある関数(){
int Arraylen
Ararylen=3
A( boost::extents[4],[Arraylen]);
}
こうやってもダメでしたね。
0519デフォルトの名無しさん
2008/02/18(月) 12:46:13じゃなくて、こうしたらだめでしたね。
0520デフォルトの名無しさん
2008/02/18(月) 12:47:32間違えました。
typedef boost::multi_array<double, 2> MyArray ;
です。
0521デフォルトの名無しさん
2008/02/18(月) 12:54:540522デフォルトの名無しさん
2008/02/18(月) 14:36:49つっこんでよ。
0523デフォルトの名無しさん
2008/02/18(月) 14:40:21細かい文法 ;が無いとか以外に。
引数で渡したら二度手間だしなるべくやりたくありません。
0524デフォルトの名無しさん
2008/02/18(月) 16:02:41使えないかと。
0525デフォルトの名無しさん
2008/02/18(月) 16:50:14int arraylen;
typedef boost::multi_array<double, 2> MyArray;
MyArray A( boost::extents[4][arraylen]);
こうやってもだめですね。
0526デフォルトの名無しさん
2008/02/18(月) 16:53:00ちなみに、
class CxxDoc : public CDocumen
{
......
等は省略しています。
0527デフォルトの名無しさん
2008/02/18(月) 19:21:13boost::multi_array<double, 2> MyArray;
ある関数(){
int Arraylen;
Ararylen=3;
MyArray ( boost::extents[4],[Arraylen]);
}
これでもダメだったので、
public::
std::vector< boost::array<double,4> > MyArray;
int Arraylen;
Ararylen=3;
MyArray.resize(Arraylen);
}
としました。
もっといいやり方があったらお願いします。
0528デフォルトの名無しさん
2008/02/18(月) 19:22:58デフォルトコンストラクタで空のmulti_arrayを作っておいて、
関数内でmulti_array::resizeを使えばいいんじゃ?
public:
typedef boost::multi_array<double, 2>;
MyArray A;
ある関数() {
int Arraylen;
Ararylen=3;
A.resize(boost::extents[4],[Arraylen]);
}
0529デフォルトの名無しさん
2008/02/18(月) 22:17:38ああ、まさにそれです。
ありがとうございます。
boost自体をまだ勉強しないとダメですね。
0530デフォルトの名無しさん
2008/02/18(月) 22:33:30warningエラーが出ますが、正常に動いています。
気にしなくても大丈夫でしょうか?
また、boostをきちんとビルドして入れると違いますか?
ビルドがうまくいかないもので比較ができません・・・。
0531デフォルトの名無しさん
2008/02/18(月) 22:53:380532デフォルトの名無しさん
2008/02/18(月) 23:03:44現在の最新版(Ver 1.34.1)ではVC6はサポート対象外になった…という噂を聞いたので試していない。
初心者には厳しすぎる事実・・・。
0533デフォルトの名無しさん
2008/02/18(月) 23:08:35VC2005EEか2008EE入れればすむ話なのでは
0534デフォルトの名無しさん
2008/02/18(月) 23:17:26NET Frameworkを入れたくないんです・・・。
一度入れたけど、すごくXPが重くなった。
それにバカだからMFCのAPPWizardが無いとちょっときつい。
0535デフォルトの名無しさん
2008/02/18(月) 23:42:38どうやらデスクトップでコマンドプロンプトを使うと、名前が長すぎるか、
それとも日本語に対応していないか?でうまくコンパイルができないみたい。
C:\にしたら問題有りませんでした。
0536デフォルトの名無しさん
2008/02/18(月) 23:53:51素直にVisual Studio Standard Edition 買った方がいいんじゃない?
2008にするかどうかは悩ましいところだけど。
わざわざ使い物にならないバッドノウハウの世界に突っ込むこともないと思う。
0537デフォルトの名無しさん
2008/02/19(火) 00:18:41わざわざ新しい物買うの?
欲しいのは山々だけどお金が・・・。
Enterprise買ったの失敗だったかな?
MFCに捨てたらほとんどWin32APIの世界で
やらないといけないようなイメージがあって
辛い。
■ このスレッドは過去ログ倉庫に格納されています