[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 02/24 09:28 / Filesize : 84 KB / Number-of Response : 389
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Boostを語れゴラァ part4



1 名前:デフォルトの名無しさん [2007/04/04(水) 14:09:06 ]
語って.はぁと part boost::mpl::int_<4>

過去スレ
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/

98 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:53:40 ]
まだ経験が足りないだけかもしれんがgoto使わないとヤバイって状況には陥ったこと無いな
例外を使わざるを得ないって状況はC++やり始めた頃から結構遭遇してるけど
制約が多い環境でのプログラミングならそういうのもよくあることなのかゐ?

99 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:55:13 ]
上級者という者は、初心や上級というものを気にしない。

という自己言及のパラドックス。

100 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:12:05 ]
>>98
C++だと例外があるからな。
Cだと異常処理の時に便利だよ。(マクロとコーディングルールも合わせて使うけどな)


101 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:12:06 ]
gotoやループ内でのswitch-caseによるフラグ操作も原則禁止だな。
ただし状態遷移のプログラムの場合は堅い設計の上で意図的に使う。
問題の本質がそうであるから。

102 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:37:54 ]
兵が恐れずにusing namespaceを使うスレでも立てるかな

103 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:47:27 ]
そんな話、C++初心者スレかどっかでやれよ

104 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:52:29 ]
Regexって日本語通るようになりましたか?

105 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:11:54 ]
「日本語通る」というのにもいろいろ水準があるような?

106 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:14:36 ]
ワイド文字バージョンなら今も昔も使えてるんじゃね。
サロゲートペアが混ざった場合にどうなるか知らんけど。



107 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:16:20 ]
2重ループの抜け出しには迷わずgotoする俺は真の猛者。

108 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:19:53 ]
SJIS範囲内だけでいいなら16bitSJIS使うという裏技もある

109 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:23:06 ]
UTF-8使え

110 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:25:19 ]
>>109
アホ発見

111 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:38:41 ]
EUCを使え

112 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:40:42 ]
ヘッダファイルでは使わんが、
ソースで using するのは別によくね?

113 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:46:21 ]
画面内に収まる程度のコード内なら普通に使う。

114 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:47:38 ]
関数スコープ内だったらusing宣言は自由に使っていいと思う。

115 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:49:29 ]
書くときは楽だが、保守するときは大変。
なので、stdしか使ったことないな。

116 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:51:35 ]
使わないほうがその関数を使ってる場所を検索一覧するときに楽。



117 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:00:48 ]
長い名前空間があった場合ってどうしてる?
エイリアス作るの?

118 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:04:11 ]
namespace hogehoge = sexualvioletmikomikonurse;

119 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:11:23 ]
エイリアス作るの?の意味がわからなかったのか?

120 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:29:10 ]
sumimasen

121 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:47:08 ]
実際何文字あっても先頭数文字が特徴的ならIDEの補完で終わるからいいんだけどな

122 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:49:22 ]
入力が面倒なんじゃなくて、
sexualvioletmikomikonurse::tokachitukuchite::gossungossungosunkugi(...);
なんて読みたくないだけ。

123 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:50:26 ]
つか、実際にそういう名前に遭遇するか?
俺は経験ないが

124 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:56:12 ]
まあないけど。

125 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:56:52 ]
>>122
真ん中のがなんだか解らなかったのが悔しい。

セクシャルバイオレットみこみこナース::とかちつくちて::ごっすんごっすん五寸釘();

126 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:34:50 ]
やっぱヘッダの中でusingするのは抵抗感じるな。
includeの後だったら影響無いのは判っているけどね……

ソース中でusingしたときのリスクってなんかあったっけ?




127 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:39:43 ]
↑↑アイマスじゃなかったっけ?
実物は見たことないけど。五寸釘は知らない。


128 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:40:46 ]
>>126
using って using directive なのか using declaration なのかどっち?
どちらにせよ
>includeの後だったら影響無いのは判っているけどね……
はちょっと意味が分からないのでもうちょっとkwsk

129 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:43:08 ]
>>126
using namespace foo; は原則として使わない。
using foo::bar; は必要があれば使う。
ネームスペース全体をusingすると、先方のネームスペースの変更で名前が衝突するリスクが発生する。

130 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:46:46 ]
>>127
アリス・マーガトロイド

131 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:48:00 ]
すごい勢いで話がずれてる

132 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:55:10 ]
sumimasen

133 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 01:56:11 ]
>>122
全部分かってしまった俺は負け組み。

134 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:01:16 ]
参考書だとスペースの都合上 using するのは仕方ない。

135 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:02:49 ]
C++は木材資源にも優しい言語でした

136 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:04:39 ]
アイマス作るの?の意味がわからなかったのか?



137 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:09:12 ]
ヲタばっかだなこのスレ

138 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:12:01 ]
boost::shared_ptr< boost::variate_generator< boost::mt19937, boost::uniform_smallint<> > >
みたいなのは適当にtypedefしとけって事ですか?

139 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:14:22 ]
うん

140 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 07:19:30 ]
↓他人のtypedefの定義名が気に入らなくて、結局、全部のソースを直した奴

141 名前:デフォルトの名無しさん [2007/05/13(日) 10:11:47 ]
Boost 1.34 age

142 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 10:18:16 ]
↑ 新機能も使わないのに何となく入れ替えてみる奴

143 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 10:37:04 ]
>53
DOM オブジェクトが返ってくるわけでもないんで望んでるものとは違うだろうけど、機能限定版 XML パーサーは Property Tree に入ってるはず。
Review は Accepted だけど CVS 上にはない…と思ったら、なんか今日 CVS 上にもあがったっぽい。
まだドキュメントがないらしいんで↓のレビューから辿れるところあたりを参照。
ttp://lists.boost.org/boost-announce/2006/04/0087.php
ttp://lists.boost.org/boost-announce/2006/05/0092.php

Property Tree 自体は任意の木構造状データを表現するためのライブラリで、INI とか JSON、果ては Windows レジストリとかも扱えるそうな。

144 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 11:19:30 ]
Boost1.34リリースですか。
Filesystemもようやっと国際化(UTF-8/UTF-16対応)か。

Xpressiveがboostの仲間入りですな。
Xpressiveて、マルチバイトOKだったっけ?
ドキュメント斜め読みする限りは対応していなさそうな感じだったけど……


145 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:26:31 ]
ドキュメント斜め読みしたらそのものずばりがあるようなんだが。
試してないが。

146 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 13:47:05 ]
あ、localeに対応しているって書いてあるね。スマソ。
後で試してみよう。



147 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 03:53:05 ]
1.34来てるのになんでこんなに盛り上がってないの?

148 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 07:40:42 ]
cvs派が結構いるから、ドキュメントさえあればって感じ

149 名前:デフォルトの名無しさん [2007/05/14(月) 12:41:26 ]
visual studio 2003にboostをインストールしたら
boost::reg_expression<char> regex = "[a-zA-Z].*[a-zA-Z]";
でerror C2262: 'regex' : 破棄できません。
というエラーが出ます

インストール失敗?



150 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 14:51:31 ]
>>53
そういうのは別のライブラリを使え、ってことじゃないかなぁ。
って、何がスタンダードなのかな。
Expat とか libxml とか?
Windows なら MSXML もあるね。

151 名前:C2262 [2007/05/14(月) 14:52:48 ]
Compiler Error C2262'identifier' : cannot be destroyed
msdn2.microsoft.com/en-us/library/aa983690(vs.71).aspx

The object cannot be instantiated because the appropriate destructor,
though defined, is not accessible.

The following sample generates C2262:

// C2262.cpp
class B
{
 ~B();
};
class D : public B {};
D d; // C2262, B's destructor is private

152 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 15:35:40 ]
>>149
代入演算子とコンストラクタの違い分かってる?

boost::regex regex("[a-zA-Z].*[a-zA-Z]");


153 名前:デフォルトの名無しさん [2007/05/14(月) 17:23:49 ]
ところで、漏れ Windows でのプログラミングってあんまりしたことなくて、
たまに下としても市販のライブラリを購入したことがなくて、
フリーのものばかり(代表的なものが boost)使ってきたんだけど、
市販の開発用ライブラリはどんなインストーラになってるの?

インストールすると C:\Program Files\ 以下にインストールされてしまうの?
自分で Boost を Windows にインストールするときには
C:\usr\lib とか C:\usr\include とかにライブラリのバイナリとヘッダを
置いているんだけど、Windows 的流儀ってのがあるのかな?

つーのは、1.34 も出たことだし、内輪で使うためにバイナリパッケージを
インストーラつきで作ろうと思ってるんだけど、パスをどうするかが
人それぞれで好みが違うってことが分かってデフォルトは何にしたらいいのかなって。

154 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 17:54:46 ]
>>153
Program Files\xxx\includeにヘッダ、Program Files\libにライブラリが一般的だと思う。
インクルードパスや、ライブラリパスがやたらと長くなるけど、プロジェクトに一回設定したら
実際のコマンドライン生成はIDE任せなんで気にしない。
unixでもpkgconfig使いだすと、コマンドラインで1kbyteとか行ったりするし。

155 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 18:22:54 ]
マニュアルのsplitの説明が間違ってる

string str1("hello abc-*-ABC-*-aBc goodbye");
typedef vector< string > split_vector_type;
split_vector_type SplitVec; // #2: Search for tokens
split( SplitVec, str1, is_any_of("-*") );
// SplitVec == { "hello abc","ABC","aBc goodbye" }
// ↑これ誤り。正しくは "hellow abc", "", "", "ABC", "", "", "aBc goodbye"
// is_any_ofは正規表現的には[-*]つまり「a-*-b」は「a,,,b」のような意味

※ boost::algorithm:splitはdisplay_progressの兄貴分w

156 名前:デフォルトの名無しさん [2007/05/14(月) 20:24:03 ]
なるほど、インクルードファイルについては各ライブラリの
ディレクトリ以下の include に、バイナリについては
\Program Files\lib という共通のディレクトリというわけですか。
バイナリが共通のディレクトリになっている理由は
動的リンクライブラリへのパスを一箇所にまとめるためですかね。
スペース入りのパスにいろんなものを置くのが気持ち悪くて、
Windows での流儀を知りたいと思っていました。



157 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:13:12 ]
デフォルトは C:\Program Files\組織名\ソフト名\ の下にして、気持ち悪い人はインストーラの操作で
変更できるようにするのが良いと思う。なお、C:\Program Filesなどのパス名はハードコードしないで
SHGetSpecialFolderPath などで取得するべし。(念のため)

158 名前:デフォルトの名無しさん [2007/05/15(火) 06:59:15 ]
>>157
インストール先ですが、組織名ってのはとりあえず省略して、
C:\Program Files\Boost で。パス名については ExePress CX
でパッケージングすると自動的で取得してくれるようです。
シェアードオブジェクト(dll)も
C:\Program Files\Boost\lib 以下に配置すべきですかね?
それともすでにパスが通っているどこかにコピーすべきでしょうか。
しかし C:\Windows\ 以下なんぞに *.dll をコピーすると
ぶっ殺されそうな気がするので、これまた Windows の流儀ってのが
あるんでしょうか?

159 名前:デフォルトの名無しさん [2007/05/15(火) 07:02:22 ]
ちなみにすでに C:\Boost\ をデフォルト位置にした
1.33.1 と 1.34 の Windows + VC++8 用バイナリパッケージと
ICU のバイナリパッケージは作りました。あとは

1)C:\Boost\ って Windows 的にはどうよ。
2)アンインストーラ対応にすべき?
  それとも単にターゲットフォルダに展開して終わり?
3)DLL はデフォルトでパスが通ってそうなところに突っ込むべき?

160 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 10:41:54 ]
アンインストーラにも対応してないような半端なインストーラなんて無いほうがまし。
レジストリを書き換えたり、スタートメニューに挿入したりするのなら、アンインストールにも
対応するべきだし、そうでないプログラムなら単純にZIPファイルで配布するのが良いだろう。
ご存知だと思うが、標準でWindowsではZIPファイルはフォルダとして見える。
どうせプログラマしか使わないのだから、配置は任せるのが良いんじゃないかな。

161 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:40:19 ]
>160
Win2kはwindowsじゃないですか、そうですか・・・

162 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:41:49 ]
終わってるWindowsだな。もちろん終わってるから悪いというわけではないけど。

163 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 12:10:07 ]
だがそれがいい

164 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 17:10:21 ]
>>161
homepage2.nifty.com/winfaq/w2k/hints.html#1071

165 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 17:47:54 ]
圧縮フォルダが使えることと、zipがシームレスにフォルダに見えることは同じ事なのか?

166 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 17:58:24 ]
圧縮フォルダでZIP書庫はフォルダとして見えるがシームレスではない



167 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 18:00:57 ]
所詮はshellのオマケ機能だしな。
NTFS標準の圧縮フォルダならシームレスと言えるのでは。

168 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:18:29 ]
>>129
その書き方じゃあ、ネームスペース全体をusingしなけりゃ
その問題が起きないように読めるが、そんなことは無いだろ?
ADLあるし。まあ、程度の差はあるだろうが。

169 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 00:10:25 ]
これはなんなの?

170 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:27:14 ]
::: 唐突に :::
boost::gui の話ってどうなったの?


171 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 02:58:45 ]
C++でクロスプラットフォームなGUIはQtを使えばいいだろ

172 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:22:43 ]
他にもwxやらGtkやらfltkやら乱立してるからなぁ・・・
良い物ができたとしてもboostの入り込む余地はあるんだろか

173 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 10:20:17 ]
Notusちょっと面白そうだったが…放置されてるな

174 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 10:43:34 ]
>>171
商売物で使うには法外な値段

175 名前:デフォルトの名無しさん [2007/05/22(火) 12:24:48 ]
dotoneto

176 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:10:41 ]
GUIに速度は不要だからもはやC++でGUI作る意義は薄いと言えなくも無い
スクリプトエンジンに外注した方が楽だな



177 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:22:57 ]
UIもOpenGLやDirectX使うのが今の流れ

178 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:40:55 ]
CUIでも?

179 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:42:35 ]
CUI自体が今の流れじゃないだろw

180 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:32:04 ]
>>177
cairo使うのが今の流れ。

181 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:23:34 ]
GUIはズールで

182 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:28:02 ]
2;\cGDI;y5u/90%.e/)4tu@jxf,/4x/d0-:/y/?

183 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 13:05:03 ]
c++と組み合わせて使うのに便利なGUIってなんだろ
c++である必要もないんだよね

184 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:24:36 ]
ATL+WTL

185 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 20:18:40 ]
CUIに2本毛が生えたのがGUI

186 名前:デフォルトの名無しさん [2007/05/23(水) 20:30:57 ]
C++/CLI


・・・ってすでに C++ じゃないか。



187 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:11:11 ]
GUIと一口にいっても、グラフィックをバリバリ使うようなソフトは
やはりC++でないと処理が追いつかないこともあるから使われるだろう。
そうでない伝票入力とか在庫管理とかのオーダーメイドアプリは
もはや完全にWebに移行している。
もっともユーザインターフェースが最新のWebでも、
データベース入出力はいまだにCOBOLが使われたりするところもあるわけだが。

188 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:12:29 ]
まあboostを使うような人はそういう売り物ソフトとはまったく無縁の人たちだろうけど


189 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:19:22 ]
基幹にはやはりCOBOLを選ぶ by 不治通

190 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:22:12 ]
NECのACOSシリーズもCOBOLだよ

191 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:46:49 ]
Webアプリって紙の呪縛があるだろ。
帳票とかネックになんないの?

192 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:48:31 ]
Japanese OK.

193 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 09:36:00 ]
質問してもいいですか?
環境:c2d,OSX,i386,ppc(ロゼッタで確認だけ),Carbon使用
  試してるboostライブラリは全てスタティック用でi386とppc(両方32bit)のユニバ
  最適化はO0〜O3まで全部試してます。

regexライブラリをリンクしただけで、コード内で使わなくても2286byte〜3???byteメモリリークしちゃう
1331と1340リリース版両方で同じ状態、i386実行とロゼッタ実行でリーク量が数byte違ったり
ライブラリのO0〜O3の影響でもリーク量が変わってます、が、リンクしただけでリークするのは変わらず。
誰か修正方法知りませんか?、LeakTracerでソース位置が特定できなくて自分のレベルでは追いきれず。
(リークはするけど正規表現の動作そのものは一通り問題なかったりします、2286は固定で持ってるテーブルかなにか??)
(regex以外のビルドの要るライブラリはfilesystemくらいしか使ってませんが1331でも1340でもリーク無し)

xpressiveをOSX(Carbon使ってる状態のXcodeプロジェクトでしか試してないけど)で使うには
struct nil;とかのnilがobj-cのnilあたり?と被ってるようなので
ローカルな名前で書き換えて良さそうなnilは全部リネーム
これで"static regex"ではないregex風の方は一通り動きます、regexとほぼ同じに使えてリーク無しなのでこっち使ってます。

Let's boostさんにある"static regex"の方は
boostヘッダ側のエラーの表示された順に危なそうな変数名でローカルな物をリネームしてみていっちゃうと
compile_resultの
typedef typename compiler_type::BOOST_NESTED_TEMPLATE apply<op_type, State, Visitor>::type type;
で行き詰まりました。誰か対処方法知ってたら教えてください、高速らしいのに使えなくてしょんぼりorz

194 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 10:17:42 ]
訂正
#include <iomanip>
#include <boost/xpressive/xpressive.hpp>
の順でインクルードしておけば"static regex"いけました、無知でごめんなさい

195 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:54:59 ]
質問するならそれなりの書き方があるだろう。
〜ちゃうとか、orzとか、2chだからまともな書き方しなくていいと思ったら大間違いだ。

196 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:58:16 ]
べつに訊き方なんでどうでもいいと思うが。
気に食わない奴は答えなきゃいいんだし。



197 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:08:51 ]
僕は回答者をやってるつもりだから偉いんだぞお!

って言いたいだけだから華麗にスルーでいいよ

198 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:59:38 ]
マルチを毛嫌いしてるのとか、マルチは悪みたいな風潮もなんだかなーと思う。
なんか昔のfjみたいな堅苦しさを感じる。別に感謝されたくて返答してるわけじゃないんだし。
マルチ嫌いをスルーすりゃいいんだけど。

199 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 14:03:51 ]
いや、悪だろw
その自覚がないのはもっと手に負えないな。

どうしても複数箇所に投下したいなら、
その旨を記述しておくべき。

200 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 14:43:57 ]
>>198
おまえ fj で苛められてただろw

201 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:02:15 ]
NetNewsの場合は、
一つの記事を複数のグループにpostする機構があり、
ヘッダを見れば、他にどこのグループにもpostされていたか分かった。
メールのTo:のようにNewsgroups:に複数グループを記述できた。

この機構を使わず、個別にpostする行為のことをマルチポストと言ったから、
技術的に批判するだけの根拠があった。

豆知識な。

202 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:02:10 ]
>>198
お前、マルチがなんで嫌われるのか本質的なことを理解できてないだろ。

203 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:14:07 ]
スレ違いで伸びるウザさも理解して欲しいもんだがなぁ。

まぁ自分にだけ寛大なのはお互い様ではあるが。

204 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:25:18 ]
手広く書き込んだほうが回答を得られる確率が上がるのでインターネットリテラシーに優れているといえるでしょう。

205 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:27:47 ]
電柱一本に尋ね人のポスター貼るより
電柱百本に尋ね人のポスター貼る方が効果的


206 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:44:38 ]
合理的



207 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:57:08 ]
コスト対効果の問題
電柱一本に貼るのと電柱百本に貼るのとで、は前者の方が経済的

208 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:28:49 ]
電柱全部が自分の自由にして良いものだと思ってるのが間違い。

209 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:24:56 ]
電柱全部が自分の自由にして良いものだと思ってると思ってるのが間違い。

210 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:28:45 ]
スレ違い

211 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:48:18 ]
電柱に立ちションするとbootsが汚れるからやめような
せめて座りション

212 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:56:41 ]
電柱にウンコしちゃだめだからね

213 名前:デフォルトの名無しさん mailto:age [2007/05/25(金) 09:50:03 ]
boostのいい日本語リファレンスマニュアルがないので、
wikiを作ろうと思うんですが、作ったら書き込んでくれるひといますか?

214 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 10:04:24 ]
俺が個人的に使ってる誤訳抜け満載のを張ってやるよ

215 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 11:52:56 ]
>>213
新しく始めるより、翻訳プロジェクト進めてくれよ。

216 名前:デフォルトの名無しさん mailto:age [2007/05/25(金) 12:39:30 ]
翻訳プロジェクトはどこにあるんですか?



217 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 12:45:16 ]
>>216
>>1
boost.cppll.jp/

崩壊気味だけど。

218 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 13:19:13 ]
こんだけライブラリの数が多けりゃ
翻訳プロジェクトとか途中で頓挫するに決まってる

219 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 13:22:50 ]
一対一対応の翻訳を目指すから挫折する
俺の書いたprogress displayの訳なんて一行だぞ一行

220 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 13:23:47 ]
だからプロジェクトにするんじゃなくてwikiにすればいいんだよ

221 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 15:46:53 ]
まスパムが未来永劫無くならない事から見てもマルチの効率はいいんでしょ。

222 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:39:17 ]
wiki作ってみました。
wikiwiki.jp/boostref/


223 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:09:16 ]
pythonでGUI
Boost.pythonでc++と結合

224 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:17:42 ]
で、pythonのGUIライブラリって何よ?
となって振り出しに戻る。

225 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:19:46 ]
ptgtkとか、pyqtとか

226 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:20:46 ]
wxPython一択じゃね?



227 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:06:35 ]
90%くらいのパソコンはMFCが動くんでないの?

228 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:48:27 ]
個人的にはMediaWikiのほうが慣れているから
こっちの乗っ取りでいいじゃないかと思った
www.cppll.jp/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8

229 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:57:09 ]
そこはεπιστημηが管理人じゃねえか。
今はなきCマガジンのそいつの連載を知ってるが、
無知で無教養でネタもつまらん、最低の連載だったぞ。
さらにロリ系のエロ漫画家と交友関係があって、そいつの絵をCマガジンにも載せたほどだ。
Cマガジンが廃刊になったのはこいつのせいだ。俺は絶対許せん。

230 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:03:00 ]
はいはい そういうのはよそでやってくれ
pc11.2ch.net/test/read.cgi/tech/1091350633/

231 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:14:26 ]
>>229

あーあ
また博之の名誉毀損の賠償額が増えちゃったよw

232 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 22:27:35 ]
>>229
*.cppll.jp の管理人は tietew だぞ。

233 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:07:43 ]
επιστημηって紀元前のεπιστημηのこと?
やっぱり違う?

234 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 23:13:26 ]
紀元前の奴がまだ生きてるわけないじゃん

235 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 07:49:15 ]
>>229
エロ漫画家と知り合いなのはエピステーメじゃなくフィンローダの方だぞ。
まあどっちもCマガの記事はつまらんかったが。

236 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:09:52 ]
おまえらカウントクラスをバカにすんな



237 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:30:15 ]
>>222
今filesystemが書かれているけど
pathではなくbasic_pathにしたほうがいいと思う

238 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:36:28 ]
wikiなんだから自分で直せば?

239 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:41:25 ]
229の誰かトップに貼れよ

240 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:42:56 ]
記事名を変える方法がわからん。
ってすまん、今名前変更に気が付いた。

241 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:44:05 ]
で、変更しようとしたら管理者パスワードを要求された
やっぱり俺にはできないようだ

242 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 01:53:30 ]
めもめも
www.kmonos.net/alang/boost/newslog/?m=200401


243 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:00:04 ]
>>242
さすがにちっと古くねえか?

244 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 03:42:14 ]
初歩的な質問で申し訳ありません。
lambdaに条件演算子に相当するものはありますか?
以下のようなファンクタをさくっと書く方法を知りたいです。

struct MyFunctor : public unary_function<bool, const char*>
{
 const char* operator()(bool x) { return x ? "YES" : "NO"; }
}

245 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 04:12:32 ]
>>244 if_then_else_return(_1, "YES", "NO")

246 名前:244 mailto:sage [2007/05/29(火) 11:36:46 ]
ありがとうございました。



247 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 20:50:28 ]
$ cat ./test.cpp && g++ test.cpp && ./a.out
#include <iostream>
#include <deque>
#include <boost/lambda/lambda.hpp>
using namespace std;
using namespace boost::lambda;
int main ()
{
typedef deque <double> Container;
Container c0;
for (size_t i (0); i < 10; ++ i)
c0.push_front (i);
Container c1 (c0);
cout << "max: " << *max_element (c0.begin (), c0.end ()) << '\n';
for_each (c0.begin (), c0.end (), _1 /= *max_element (c0.begin (), c0.end ()));
cout << "c0: "; for_each (c0.begin (), c0.end (), (cout << _1 << ' ')); cout << '\n';
for_each (c1.begin (), c1.end (), _1 /= 9);
cout << "c1: "; for_each (c1.begin (), c1.end (), (cout << _1 << ' ')); cout << '\n';
return 0;
}
max: 9
c0: 1 8 7 6 5 4 3 2 1 0
c1: 1 0.888889 0.777778 0.666667 0.555556 0.444444 0.333333 0.222222 0.111111 0

最近lamdaを使いはじめました
c0とc1の内容が異なってくるのですがこれはしょうがないんですかね
このへんの解説ページなんかあれば教えていただけるとうれしいのですが


248 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:34:39 ]
思いっきり/9で割ってるやん

249 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:46:55 ]
           ,,,ィッッシミ彡三ミ、,
          /彡彡三三三ミミ彡ミ、
        /彡彡へ-‐'''゙゙⌒´ヽ、ミミミヘ
        {彡彡-''゙゙      U ミミヘヘ{
        |彡;{  u         ミミミミ
        |彡i ィッァ、   ィ≡ミ、  }ミミミ
        r-;;{´ ィェァ、}--{ r‐ッ-、 }‐‐;;r''´}
        ヽヽ_'゙__ノ,' ',ヽ__''゙__ノ  :|/::)    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         `|   /(、,  ,, )    :::|::,.}   < そろそろイキそうだ、中に出して良いかい?  
         ヽ', ヽ弋''‐'''フ-ノ  ,::ノ ハァハァ
          ヽ,、 `‐‐'''´ ,.::::::ノ
           /ヽ、__ニ___ノ''゙ .⌒\
 アンアン     / 人 。   。  丿\ \
         \ \|  亠   / / / パン
  / ̄ ̄ ̄\ \⊇ 干\ ⊆  /    
  i'_liノ |_|iトil_}__,l   ( 。     |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |i.}┃ ┃ ミ;i|《  /⌒v⌒\ ) < 社長〜中出しして良いから次も主役お願いね♪
  |lヽ'' ヮ ''' ,_) l/⌒\ ノ   ) |   \___________
 /        |  |       |  |    パン
 |  |.  Y   |  |__/  |  |      パン
 |  |ヽ__人___ノ|  ト'   |    |/^ヽ
 |  | ゜  ゜  |  |_/ ヽ__人_ノ
⊆, っ      とーっ
〜〜〜〜〜その頃堀江ヲタは…〜〜〜〜〜〜
     ほっちゃんは天使だおハァハァ シコシコ
  (*´Д`)    シュッ            シコシコ
 Σ⊂彡_,,..i'"':
     |\`、: i'、
     \\`_',..-i
       \|_,..-┘



250 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:51:37 ]
>>247
なんだこれ…
lambdaはデフォルトで定数項を参照で保存するのか。
constantで回避できるけど、なんでこうなってるんだろ。

251 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:41:06 ]
>247
>250
脊髄反射で全くはずれた事を書きそうになったけど、ちょい調べてみた。
↓の通り、基本的に lambda は参照ではなくてコピーした値を保持している。
ttp://www.boost.org/doc/html/lambda/using_library.html#lambda.storing_bound_arguments
が、(↑にも書いてあるけど)複合代入演算子の左辺は参照で保存される(当たり前)。
で、(多分実装の手抜きのため?)左辺と右辺で参照か値かが異なる場合が対応されていないため、
/= の右辺も(const だけど)参照で受けてしまう。
cf. lambda/detail/operators.hpp

そのため、

_1 /= *max_element (c0.begin (), c0.end ())

の代わりに

_1 = _1 / *max_element (c0.begin (), c0.end ())

とすると、結果が c1 と同じになる。

252 名前:247 mailto:sage [2007/05/30(水) 03:18:16 ]
>>250,251
よくわかりました
有難うございます


253 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:04:50 ]
STLってさbegin (), end ()とか渡さなくても
上記のメンバ関数有るの分かってるんだから
クラスのポインタ受けとりゃいいんじゃないの

254 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:09:21 ]
>253
組み込み配列を渡したくなったときのことを考えてみよう

255 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:50:03 ]
>>253
boost::rangeがまさにそれをやってる。

>>254
既存のコンテナの一部を渡すのもそうだな。

256 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:23:45 ]
>>253
オブジェクトへのポインタの間違い?

開始点と終了点を渡すiterator式のインターフェースの方がずっと汎用性がある。
例えば、途中から渡したい場合、
iteratorを持たない集合型オブジェクト上のiteratorを自前でつくる場合、
変換iteratorを使う場合など。

この辺の議論は20〜30年前に決着済みです。



257 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:34:58 ]
>>256
コンテナがあればイテレータふたつは簡単に手に入るし、
イテレータがふたつあればそれを仮想的なコンテナとみなせるから、
コンテナとイテレータのどっちを基準にしても汎用性は変わらないだろ。
むしろ、利便性の問題。

258 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:42:52 ]
>>255
> 既存のコンテナの一部を渡すのもそうだな。

などの利便性は、汎用性と言ってもいいのではないでしょうか。


259 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 11:02:56 ]
2つのイテレータを引数に取る関数のラッパとしてコンテナの参照を引数に取る関数を作るのは容易だが、その逆はそうはいかない。

260 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 11:08:07 ]
突っ込みやすい話題だとレスがいっぱい付くね

261 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:08:43 ]
>>256-259
するとrangeの存在意義は?

というわけで
>>253
range_ex

262 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:32:06 ]
関数オーバーロードできるんだから
両方用意しとけばいいんだよな


263 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:15:04 ]
まーJAVAやVC、BCCのクラスライブラリと違って浅い抽象化だから。

264 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 01:46:46 ]
C++の試験ってあったけか?

265 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 06:29:43 ]
boostってネットワーク系ある?

266 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 07:17:25 ]
asio



267 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:03:43 ]
>>265
ttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket

268 名前:デフォルトの名無しさん mailto:age [2007/05/31(木) 22:08:42 ]
双方向リストに対してboostのregexを使いたいのですが、どうやったらいいんでしょうか。
BidiIteratorを自分で実装すればできるっぽいのですが、よくわかりません。
誰か教えてください。

269 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:18:04 ]
何が分からないのか分からないって状態みたいだから、
まずはiteratorについて学ぶよろし。

270 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:21:52 ]
イテレータはだいたい分かっているつもりです。
std::listなんかでよく使うので。

271 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:32:09 ]
BidirectionalIteratorの実装法が分からんってこと?

272 名前:268 mailto:sage [2007/05/31(木) 23:47:32 ]
たとえば、
struct node{
  char c;
  node *prev, *next;
}
というノード構造体のリストで構成された文字列があるとして、
これに対してboostのregexを使うにはどうすればいいのかということです。


273 名前:268 mailto:sage [2007/06/01(金) 00:00:33 ]
272のような構造体ではなくて、std::list<char> に対してregexを使う方法でもいいです。

274 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:04:48 ]
std::list<char>::iterator ????

275 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:18:45 ]
きちんとやろうとすると長くなるので要点だけ。
struct honya : public std::iterator<std::bidirectional_iterator_tag, char>
{
 honya(const node *n = NULL) : node_ptr_(n)
 {
 }
 // あとoperator=()もあったほうが。
 honya &operator++()
 {
   node_ptr_ = node_ptr_->next;
   return *this;
 }
 honya &operator--()
 {
   node_ptr_ = node_ptr_->prev;
   return *this;
 }
 // 同様にoperator--(int)とoperator++(int)も定義すること。
 char &operator*()
 {
  return node_ptr_->c;
 }
 // const版もいるかも。

private:
 node *node_ptr_;
};

boost::regex_search(honya(&first_node), honya(&last_node), ...

276 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:19:48 ]
書いている間に…

>>273
それなら、
std::list<char> l;
regex_search(l.begin(), l.end(), ...

でいけるはず。



277 名前:268 mailto:sage [2007/06/01(金) 00:27:11 ]
どうもありがとうございます。
こんな長いコードまで書いていただいて恐縮です。

278 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:40:26 ]
>>275
Boost.Iteratorsは?

279 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:53:07 ]
regexは文字列に対して使うんだよ。

280 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 20:10:11 ]
文字はcharかwchar_tしか使えないけど、
文字列のデータ構造はイテレータさえ実装すれば自由だよ。

281 名前:デフォルトの名無しさん [2007/06/02(土) 14:52:12 ]
using namespace boost:lambda;
boost::function<boost::uint64_t(boost::uint64_t)> f = _1 + _1;

引数のboost::uint64_tをunsinged int に変えるとコンパイルできるのですがboost::uint64_tだと
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\boost-1_33_1\boost\function\function_template.hpp(119):
error C2440: 'return' : 'boost::lambda::lambda_functor_base<Act,Args>::sig<SigArgs>::type' から 'boost::uint64_t' に変換できません。
 
とコンパイルエラーになってしまします。 コンパイラはvc7.1です。

282 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 21:20:26 ]
boostをインストールする場所なんですが
linuxだったら,
/usr/local/include
にboostおけばいいのかな

まだboostに正式にacceptされてないのは
/usr/local/share/include
あたり?

283 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 21:28:03 ]
Linuxだったらrpm様の言う通りw

284 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 21:46:02 ]
RHEL5なのでrpmないんです

285 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 00:13:20 ]
RHELならサポートに電話

286 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 21:32:16 ]
まぁ確かにその為に金払ってるんだしな



287 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:56:29 ]
Fedora の rpm を使えば良い

288 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:53:31 ]
>>287
まじで使えるの?

289 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:54:44 ]
たいてい使えるよ

290 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 18:20:45 ]
使えなかったら、rpmbuildするとか。
いろいろあるだろ

291 名前:デフォルトの名無しさん mailto:sage [2007/06/19(火) 12:06:13 ]
MFCのTRACEのようなものはboostにありませんか?

292 名前:デフォルトの名無しさん [2007/06/22(金) 01:59:52 ]
Boostで一番高速なアロケータは何よ?

293 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 02:37:51 ]
シングルスレッド版のpool

294 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 02:55:08 ]
>>293
d
試してみる

295 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 09:30:31 ]
>>291
boost.formatを使って、
assert(cerr << (format("value = %d") % value) << endl);
とかじゃだめなん?

296 名前:デフォルトの名無しさん [2007/06/22(金) 19:22:42 ]
テンプレート関数で引数として渡されたものがdelete演算子の引数に出来るかどうかを
concept_checkで保障したいわけなんですが
「delete演算子の引数に出来る」ってことのconceptってありますかねぇ?



297 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 19:32:15 ]
すいません速攻自己解決しました><
そのためのconcept作ってやれば良いんですね(汗

298 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 19:59:06 ]
場合によるけど、不完全型のdeleteを認めないようにすることも考えたほうがいいよ

299 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 20:47:34 ]
shared_ptrかなにかでそれチェックしてなかったっけ

300 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 21:12:20 ]
checked_deleteを使っているはず

301 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 15:45:18 ]
sandboxも含めたら(含めなくてもだけど^^^)とてもじゃないけど全部使いこなせる気にはなれないぜ…

302 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 21:09:17 ]
自分が必要なものが使いこなせればいいんじゃないの

といいつつspirit使ってコンパイルエラーになると右往左往する俺

303 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 01:47:20 ]
すみません、質問です。

boost::lambdaで、PODな構造体のメンバ変数へアクセスする方法はありますか?
具体的には、以下のような構造体があるときに、

struct MyPOD {
 int foo;
};

以下のような感じのファンクタを書きたいのです。

_1::foo += 1

どうか宜しくご教示願います。

304 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:28:10 ]
>>303
bind(&MyPOD::foo, _1) += 1

305 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:33:26 ]
( &_1 ->* &POD::foo ) += 1
というような手もあるが、どうみてもbindの方が分かりやすいですね本当に(ry

306 名前:デフォルトの名無しさん [2007/06/26(火) 04:26:32 ]
boost::filesystem って wchar_t 扱えるように仕様変更になったんだっけ?
boost.cppll.jp/HEAD/libs/filesystem/doc/faq.htm#wide-character_names
みてると narow char しかサポートしないよ、へっ、って。
開発してる人に心境の変化があったの?



307 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 07:11:21 ]
>>306
そりゃいくらなんでも情報源が古すぎるわw > Revised 09 December, 2003

www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1889.html
www.boost.org/libs/filesystem/doc/tr2_proposal.html


308 名前:デフォルトの名無しさん [2007/06/26(火) 09:04:07 ]
>>307
おお、ありがとう。
ところで、boost::filesystem::path を使うと
Visual Studio 2005 の IntelliSense が
UnintelliSense になっちゃうんだけど、
これはどうしようもない??

IntelliSense が無いと生きていけない体になっちゃった。

309 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:11:32 ]
ヘッダをプロジェクトに加えれば結構効くようになるお

310 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:13:02 ]
lambdaとかつかうとintelisenceどころじゃないが、一応どうしても使いたいってんなら
そういう時はいったん終了して*.pdbを削除して開きなおせばまた認識してくれるようになるよ

311 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:24:12 ]
*.ncbでしょ
経験上、これを消しても効果ないことが多い
で、>>309のような結論に至った

312 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:30:57 ]
ほうほうなるほろ
書いたヘッダを自動的にプロジェクトに取り込むようなマクロ使えば自動化もできるし、俺も使ってみるよ

313 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:04:41 ]
omaera shinsetsu desu ne.

314 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:36:28 ]
だ、だめだぁ
ヤパーリ UnintelliSense ダターヨ(笑

315 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:30:33 ]
boost::progress_display ってなくなっちゃうの?

316 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:36:52 ]
それは困るなあ(笑)



317 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:43:56 ]
std::map<int, int> m;
    :
std::for_each(m.begin(), m.end(), /* */);

boost lambdaでmap各要素のsecondに定数を代入したいのですが
どのようにしたらいいのでしょうか?
vectorだったら _1 = N でいいのですが、mapだとstd::pair<const int, int>なのでどうしたらいいのかわかりません。

318 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:32:32 ]
( bind(&std::pair<int,int>::first, _1) = 0 )
これでいけるはずだけどconst intからint&に変換できないとかぬかしやがる
もし可能だとしてもconstはずしとか参照作成とか面倒そうなので
素直に関数オブジェクト自作してやった方が楽っぽい

319 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:49:09 ]
志村ー、second,second!!!

320 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:57:18 ]
アッー!!えらい勘違いしてたごめんだぜ
とりあえずこれでできるっぽい

std::for_each(m.begin(), m.end(), ( bind(&std::pair<const int,int>::second, _1) = 0 ) );


321 名前:317 mailto:sage [2007/06/26(火) 16:15:44 ]
>>320
ああ、メンバ変数へのポインタ使うんですね。
でも…なんかパッと見分かりづらくて…微妙ですね。
ありがとうございました。

322 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:11:03 ]

  map m;
  {
    using namespace boost::lambda;
    using boost::for_each;

    typedef const map::key_type key_type;
    typedef map::mapped_type value_type;
    typedef std::pair<key_type, value_type> pair;

    for_each( m, bind( &pair::second, _1 ) = 0 );
  }

  {
    class assignSecond
      : std::unary_function< std::pair<const int,int>&, void > {
    public:
      assignSecond(int value_) : value(value_) {}
      result_type operator()(argument_type arg) { arg.second = value; }
    private:
      int value;
    };

    boost::for_each(m, assignSecond(0));
  }

typedefとか使って無理やり「処理してる部分だけは」見やすくしても
ローカル関数オブジェクトを使うのと大して変わらない手間だからなぁ(処理効率はlambdaの方がいいらしいけど)
同じ型に一連の処理をするなら最初にまとめてtypedefでもしてシンプルに記述できるかもしれんが
いまいち使いどころが分かりにくいライブラリだ…

323 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:56:21 ]
pair の型は map::value_type でとれますよ。
ちょっとだけ端折れる。

324 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:58:29 ]
boost::filesystem::pathのマルチバイト対応予定ってないの…?
wpath使えって事なのか?

325 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:07:31 ]
boostがというよりC++自体がマルチバイト文字列を
直接いじくることを考慮していない感じ。

326 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:28:21 ]
世の中も何だってUnicodeにすればおkという風潮だしな



327 名前:デフォルトの名無しさん [2007/06/26(火) 22:09:53 ]
BOOST_FOR_EACH
じゃいかんの?


328 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:25:45 ]
なんとなくlambdaが使いたい気分なんでw

329 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:10:58 ]
range_exって何故sandboxから出せないの?
何か問題があるのかな?

早く使いたいんだけど、sandboxのを仕事で使うのは微妙だしなぁ。

330 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:15:08 ]
どうせ内部でboost::begin(container), boost::end(constainer)を呼びだして
stlアルゴリズムを適用するもの書くんだからsandboxだからと言って避ける必要ないジャンとか思うけど
そこはややこしい内部仕様の思わぬ罠とか恐れての事なんだろうね

331 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:54:58 ]
#include <valarray>
//#include <boost/range.hpp>
#include <boost/range_ex/algorithm.hpp>

int main() {
enum { ARRAY_SIZE = 10 };
typedef std::valarray<int> val_array;
val_array v1( ARRAY_SIZE );
boost::fill(v1, 0);
}
みたいな具合にboost:range関係をvalarrayでも使いたいんですが
そもそもvalarray使うのが間違いってことなんでしょうか?


332 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 03:35:08 ]
valarrayで使うという発想はなかった……
明日試してみよう。今日は寝る。

333 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:08:54 ]
valarrayにはbeginとendがないからね。
大域名前空間でいいから自分でbeginやendを定義すればいいと思う。
あとvectorみたいに要素の連続性の保証がないなら、
自前でイテレータを書いてやるのが移植性向上のためにはいいかもしれない。

334 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:29:45 ]
StateChartは使いどころが今ひとつわかんね

アレのお世話になるほど状態遷移が複雑になるならむしろ
専用のツール作って(あるいはExcel使うとか)そのツールからコードジェネレート
した方が早いんじゃないかと思ったりする


ひょっとして実はすごく多機能なんだろうか・・・

335 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:50:32 ]
>>333
valarray は要素の連続性を保証してるみたいだよ。

26.3.2.3p3
任意の型 size_t の i 及び 型 size_t の j について、
i+j が非定値の配列 a の要素数よりも小さい場合、
式 &a[i+j] == &a[i] + j は真とする。

vector も今は連続性を保証してる。

23.2.4p1 抜粋
ベクトルの要素は、連続した場所に蓄えられる。
すなわち、T を bool 以外の型とし、v を型 vector<T, Allocator> のベクトルとした場合、
0 ≦ n < v.size()) となるすべての n について、
同一性 &v[n] == &v[0] + n が成り立つ。

336 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 23:37:34 ]
>>334
(゚Д゚)ハァ?



337 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:00:23 ]
意味がわからんならスルーしろよ

338 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:42:13 ]
>>334
Boost.FSM がレビュー待ち

339 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:57:26 ]
一瞬フライングスパゲティモンスターに見えた
有限状態機械だった

340 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:21:15 ]
uBlasってboostの標準ライブラリですか?

341 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:52:52 ]
そうだお

342 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 14:56:36 ]
そそ。依存してるヘッダをプロジェクト内に突っ込んどくとそこそこインテリ化するよね。

343 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 14:57:45 ]
うわ、誤爆したorz

344 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 16:45:56 ]
>>342
そそって言うの止めろよ。気持ち悪い

345 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 17:50:18 ]
そそそ

346 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 17:54:36 ]
どうだっていいだろ
せめてプログラムの事で絡めよ気持ち悪い



347 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 18:20:51 ]
やっぱりvalarrayの(賢い方法での)range対応化は無理でした…
そもそもこれSTLコンテナのインターフェースじゃないんですよね
range関数やrangeイテレータの特殊化が組み込み型一つ一つの場合において特殊化していくような
強引なやり方でしか出来ませんでした><(といっても組み込み型に対してしか使えないから問題なさそうだけど)


348 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 20:02:26 ]
部分特殊化できないの?

349 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 01:08:17 ]
部分特殊化ってカリー化みたいだな・・・

350 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 21:22:26 ]
だからなに

351 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 00:03:09 ]
無性にカレーを食いたくなってきた


352 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 00:09:57 ]
日本印度化計画が脳裏に

353 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 02:11:29 ]
低所得者域は既にインド化済み。
雇用形態は真逆だがな。

354 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:09:21 ]
>>353
日本じゃ所得に関わりなく奥さんがお弁当とどけてくれたりしないですよ

355 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:08:58 ]
サリーさんのような嫁が欲しい

356 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:55:27 ]
>>349
むしろカリー化を型志向言語で体現する手法がテンプレートなんじゃないのか



357 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:44:35 ]
>>349>>356
全くの見当違いですので。

358 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:38:36 ]
>>349>>356
テンプレートでは引数の数は変わりません。

359 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:47:10 ]
カリー化と引数の数は関係ないんじゃ?

360 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:38:09 ]
関係あるだろ。自由変数が引数になる。
>>349は全くの逆だが。


361 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:40:45 ]
boost::ublasのmatrixって、宣言と同時に初期化できないの?
いちいち

mat( 0, 0 ) = 1; mat( 0, 1 ) = 2; mat( 0, 2) = 3;

みたいな書き方してるとだるいし、コードが読みにくくなる・・・
Blitz++だと、

mat =
1, 2, 3,
4, 5, 6,
7, 8, 9;

みたいな書き方できるけど、イテレータがビミョーらしいしorz
> T_iterator is an iterator type. NB: this iterator is not yet fully
> implemented, and is NOT STL compatible at the present time.

362 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:50:26 ]
mat =
  1 = 2 = 3 =
  4 = 5 = 6 =
  7 = 8 = 9;

みたいなのは作ろうと思えば作れそうだな。

363 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:21:08 ]
>>362
明らかに実装不可能な = を例に出すようなおまえにゃムリだな。

364 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:35:22 ]
= は右結合だったな・・・。
<< でいいや。

365 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:51:23 ]
右結合云々以前にoperator=はクラス外部で宣言できないから


366 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:58:07 ]
せめてboost::assignみたいにmatrix_list_of(1,2,3)(4,5,6)(7,8,9)
ってできればいいんだけど



367 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:04:57 ]
ttp://sheepman.sakura.ne.jp/diary/?date=200605

#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <iostream>

int main () {
using namespace boost::numeric;
using namespace std;

ublas::vector<double> v;
istringstream is("[3] (0.1, 2, 2)");
is >> v;

cout << v << endl;
}

$./a.out
[3](0.1,2,2)

これが一番よさそうかなぁ。
matrixでできるかどうかはわからんけど

368 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:23:22 ]
>>365
誰もクラス外部での話に限定してなかったけどな。

369 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 17:57:06 ]
こんなの書いてみた
template <class T>
class Vectorizer {
public:
    typedef typename boost::numeric::ublas::vector<T>::size_type size_type;
        explicit Vectorizer(size_type size) : cur_(0), vector_(size) {}

    template <class T2> Vectorizer& operator&(const T2& t) {
        vector_(cur_++) = t;

        return *this;
    }

    operator boost::numeric::ublas::vector<T>() const {
        return vector_;
    }

private:
    size_type                               cur_;
    boost::numeric::ublas::vector<T> vector_;
};
使い方
ublas::matrix<int> m(Vectorizer<int>(3) & 0 & 1 & 2); // m = [3](0,1,2)
コピーが発生するから効率は良くない・・・RVO的なものが効くかも知れないけど
rvalue-referenceが欲しいところ

370 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 18:14:44 ]
最適化なら・・・最適化ならきっとなんとかしてくれる・・・!!

371 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 06:39:39 ]
Visual Studio 2005 で IntelliSense がきかねぇよ・・・
しかも特定のライブラリ使ったときに顕著。
っていってたやつですが、using 使うと結構回避できるんですね。

boost::filesystem::path とか boost::spirit::file_iterator とか
がそれなんですが、 using boost::filesystem::path するとか
using filesystem=boost::filesystem すると IntelliSense が
効くみたい。

372 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 09:40:53 ]
>>371
へぇーやってみよ

373 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 17:38:23 ]
二版出るって。タプルのために買おうかな。
ttp://www.kmonos.net/pub/BoostBook/

374 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 17:44:38 ]
いつの間にか、circular_bufferが削除されてる……?
ttp://svn.boost.org/trac/boost/changeset/4154

一体何があった?

375 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:07:13 ]
>>373
おお。
あれから(初版)だいぶboostも進化したし、時代遅れになってたから
そろそろ新しく書いてくれないかと思ってたところなんだ。
これは買おう。

376 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:14:27 ]
boostそのものより、その実装に使ってる技術(とその理由)を解説したものってないのかなぁ

shared_ptrのchecked_delete
でさえ何でこんな事してんの??

とさんざん悩んだよ
よく読むとドキュメントに書いてあったけど、書いてないものもあるし・・・



377 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:23:54 ]
ああ、確かにそういう本欲しいなあ。
boostを題材にModern C++みたいなことをしてくれる本

378 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:03:17 ]
そんなニッチな本売れねーよ

379 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:23:43 ]
俺も欲しいけどなあ、そんな本。
使い方の解説はWeb上にたくさんあるけど、仕組みまで解説したところはほぼ皆無だし。

380 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:44:10 ]
C++の本自体もうあまりでねーだろうが・・・

381 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:44:38 ]
>>380

382 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:47:18 ]
方向性がどんどんマニアックになってるからね。
素人向けしない仕様・思想がてんこもり

383 名前:デフォルトの名無しさん [2007/07/08(日) 04:21:56 ]
いわゆる Smalltalk 系の OOP が好きな奴は
C# とか Java とか Ruby でいいと思うよ。

C++ はどんどんマニアックになってほしい。


384 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 05:27:34 ]
>>373
秀和の本って紙が厚くない?
もちっと薄い紙にしてほしいけど単価高いのかなぁ。


385 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 06:48:21 ]
最近のコンパイライには tr1 名前空間以下にいろいろと
用意されているの?

386 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:00:42 ]
お化けのqueue太郎が復刊されるらしいね



387 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:41:18 ]
blogに内部構造の話書こうかと思ったけど、
解読している時間が少なくなってしまってもったいないんだよね。
持続してblogに技術話書き続けている人って本当にすごい。

388 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:50:52 ]
>>387
自分のメモ程度の物でいいんじゃないの?
そういうサイトも結構役に立つんだよね、暗中模索しちゃったときとか







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<84KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef