Boostを語れゴラァ part4at TECH
Boostを語れゴラァ part4 - 暇つぶし2ch200:デフォルトの名無しさん
07/05/24 14:43:57
>>198
おまえ fj で苛められてただろw

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

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

豆知識な。

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

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

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

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

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


206:デフォルトの名無しさん
07/05/24 21:44:38
合理的

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

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

209:デフォルトの名無しさん
07/05/24 23:24:56
電柱全部が自分の自由にして良いものだと思ってると思ってるのが間違い。

210:デフォルトの名無しさん
07/05/24 23:28:45
スレ違い

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

212:デフォルトの名無しさん
07/05/25 00:56:41
電柱にウンコしちゃだめだからね

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

214:デフォルトの名無しさん
07/05/25 10:04:24
俺が個人的に使ってる誤訳抜け満載のを張ってやるよ

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

216:デフォルトの名無しさん
07/05/25 12:39:30
翻訳プロジェクトはどこにあるんですか?

217:デフォルトの名無しさん
07/05/25 12:45:16
>>216
>>1
URLリンク(boost.cppll.jp)

崩壊気味だけど。

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

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

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

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

222:デフォルトの名無しさん
07/05/25 16:39:17
wiki作ってみました。
URLリンク(wikiwiki.jp)


223:デフォルトの名無しさん
07/05/25 17:09:16
pythonでGUI
Boost.pythonでc++と結合

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

225:デフォルトの名無しさん
07/05/25 17:19:46
ptgtkとか、pyqtとか

226:デフォルトの名無しさん
07/05/25 17:20:46
wxPython一択じゃね?

227:デフォルトの名無しさん
07/05/25 19:06:35
90%くらいのパソコンはMFCが動くんでないの?

228:デフォルトの名無しさん
07/05/25 19:48:27
個人的にはMediaWikiのほうが慣れているから
こっちの乗っ取りでいいじゃないかと思った
URLリンク(www.cppll.jp)

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

230:デフォルトの名無しさん
07/05/25 21:03:00
はいはい そういうのはよそでやってくれ
スレリンク(tech板)

231:デフォルトの名無しさん
07/05/25 21:14:26
>>229

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

232:デフォルトの名無しさん
07/05/25 22:27:35
>>229
*.cppll.jp の管理人は tietew だぞ。

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

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

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

236:デフォルトの名無しさん
07/05/26 08:09:52
おまえらカウントクラスをバカにすんな

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

238:デフォルトの名無しさん
07/05/26 08:36:28
wikiなんだから自分で直せば?

239:デフォルトの名無しさん
07/05/26 08:41:25
229の誰かトップに貼れよ

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

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

242:デフォルトの名無しさん
07/05/27 01:53:30
めもめも
URLリンク(www.kmonos.net)


243:デフォルトの名無しさん
07/05/27 23:00:04
>>242
さすがにちっと古くねえか?

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

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

245:デフォルトの名無しさん
07/05/29 04:12:32
>>244 if_then_else_return(_1, "YES", "NO")

246:244
07/05/29 11:36:46
ありがとうございました。

247:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/29 21:34:39
思いっきり/9で割ってるやん

249:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/29 22:51:37
>>247
なんだこれ…
lambdaはデフォルトで定数項を参照で保存するのか。
constantで回避できるけど、なんでこうなってるんだろ。

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

そのため、

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

の代わりに

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

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

252:247
07/05/30 03:18:16
>>250,251
よくわかりました
有難うございます


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

254:デフォルトの名無しさん
07/05/30 09:09:21
>253
組み込み配列を渡したくなったときのことを考えてみよう

255:デフォルトの名無しさん
07/05/30 09:50:03
>>253
boost::rangeがまさにそれをやってる。

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

256:デフォルトの名無しさん
07/05/30 10:23:45
>>253
オブジェクトへのポインタの間違い?

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

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

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

258:デフォルトの名無しさん
07/05/30 10:42:52
>>255
> 既存のコンテナの一部を渡すのもそうだな。

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


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

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

261:デフォルトの名無しさん
07/05/30 16:08:43
>>256-259
するとrangeの存在意義は?

というわけで
>>253
range_ex

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


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

264:デフォルトの名無しさん
07/05/31 01:46:46
C++の試験ってあったけか?

265:デフォルトの名無しさん
07/05/31 06:29:43
boostってネットワーク系ある?

266:デフォルトの名無しさん
07/05/31 07:17:25
asio

267:デフォルトの名無しさん
07/05/31 13:03:43
>>265
URLリンク(www.crystalclearsoftware.com)

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

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

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

271:デフォルトの名無しさん
07/05/31 23:32:09
BidirectionalIteratorの実装法が分からんってこと?

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


273:268
07/06/01 00:00:33
272のような構造体ではなくて、std::list<char> に対してregexを使う方法でもいいです。

274:デフォルトの名無しさん
07/06/01 00:04:48
std::list<char>::iterator ????

275:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/01 00:19:48
書いている間に…

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

でいけるはず。

277:268
07/06/01 00:27:11
どうもありがとうございます。
こんな長いコードまで書いていただいて恐縮です。

278:デフォルトの名無しさん
07/06/01 00:40:26
>>275
Boost.Iteratorsは?

279:デフォルトの名無しさん
07/06/01 00:53:07
regexは文字列に対して使うんだよ。

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

281:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/02 21:20:26
boostをインストールする場所なんですが
linuxだったら,
/usr/local/include
にboostおけばいいのかな

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

283:デフォルトの名無しさん
07/06/02 21:28:03
Linuxだったらrpm様の言う通りw

284:デフォルトの名無しさん
07/06/02 21:46:02
RHEL5なのでrpmないんです

285:デフォルトの名無しさん
07/06/03 00:13:20
RHELならサポートに電話

286:デフォルトの名無しさん
07/06/03 21:32:16
まぁ確かにその為に金払ってるんだしな

287:デフォルトの名無しさん
07/06/05 01:56:29
Fedora の rpm を使えば良い

288:デフォルトの名無しさん
07/06/06 12:53:31
>>287
まじで使えるの?

289:デフォルトの名無しさん
07/06/06 12:54:44
たいてい使えるよ

290:デフォルトの名無しさん
07/06/06 18:20:45
使えなかったら、rpmbuildするとか。
いろいろあるだろ

291:デフォルトの名無しさん
07/06/19 12:06:13
MFCのTRACEのようなものはboostにありませんか?

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

293:デフォルトの名無しさん
07/06/22 02:37:51
シングルスレッド版のpool

294:デフォルトの名無しさん
07/06/22 02:55:08
>>293

試してみる

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

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

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

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

299:デフォルトの名無しさん
07/06/22 20:47:34
shared_ptrかなにかでそれチェックしてなかったっけ

300:デフォルトの名無しさん
07/06/22 21:12:20
checked_deleteを使っているはず

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

302:デフォルトの名無しさん
07/06/23 21:09:17
自分が必要なものが使いこなせればいいんじゃないの

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

303:デフォルトの名無しさん
07/06/26 01:47:20
すみません、質問です。

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

struct MyPOD {
 int foo;
};

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

_1::foo += 1

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

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

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

306:デフォルトの名無しさん
07/06/26 04:26:32
boost::filesystem って wchar_t 扱えるように仕様変更になったんだっけ?
URLリンク(boost.cppll.jp)
みてると narow char しかサポートしないよ、へっ、って。
開発してる人に心境の変化があったの?

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

URLリンク(www.open-std.org)
URLリンク(www.boost.org)


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

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

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

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

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

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

313:デフォルトの名無しさん
07/06/26 10:04:41
omaera shinsetsu desu ne.

314:デフォルトの名無しさん
07/06/26 10:36:28
だ、だめだぁ
ヤパーリ UnintelliSense ダターヨ(笑

315:デフォルトの名無しさん
07/06/26 13:30:33
boost::progress_display ってなくなっちゃうの?

316:デフォルトの名無しさん
07/06/26 13:36:52
それは困るなあ(笑)

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

319:デフォルトの名無しさん
07/06/26 15:49:09
志村ー、second,second!!!

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

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


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

322:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/26 17:56:21
pair の型は map::value_type でとれますよ。
ちょっとだけ端折れる。

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

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

326:デフォルトの名無しさん
07/06/26 21:28:21
世の中も何だってUnicodeにすればおkという風潮だしな

327:デフォルトの名無しさん
07/06/26 22:09:53
BOOST_FOR_EACH
じゃいかんの?


328:デフォルトの名無しさん
07/06/26 22:25:45
なんとなくlambdaが使いたい気分なんでw

329:デフォルトの名無しさん
07/06/27 10:10:58
range_exって何故sandboxから出せないの?
何か問題があるのかな?

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

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

331:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/28 03:35:08
valarrayで使うという発想はなかった……
明日試してみよう。今日は寝る。

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

334:デフォルトの名無しさん
07/06/29 20:29:45
StateChartは使いどころが今ひとつわかんね

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


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

335:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/29 23:37:34
>>334
(゚Д゚)ハァ?

337:デフォルトの名無しさん
07/06/30 00:00:23
意味がわからんならスルーしろよ

338:デフォルトの名無しさん
07/06/30 17:42:13
>>334
Boost.FSM がレビュー待ち

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

340:デフォルトの名無しさん
07/06/30 19:21:15
uBlasってboostの標準ライブラリですか?

341:デフォルトの名無しさん
07/06/30 19:52:52
そうだお

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

343:デフォルトの名無しさん
07/07/01 14:57:45
うわ、誤爆したorz

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

345:デフォルトの名無しさん
07/07/01 17:50:18
そそそ

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

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


348:デフォルトの名無しさん
07/07/01 20:02:26
部分特殊化できないの?

349:デフォルトの名無しさん
07/07/03 01:08:17
部分特殊化ってカリー化みたいだな・・・

350:デフォルトの名無しさん
07/07/03 21:22:26
だからなに

351:デフォルトの名無しさん
07/07/04 00:03:09
無性にカレーを食いたくなってきた


352:デフォルトの名無しさん
07/07/04 00:09:57
日本印度化計画が脳裏に

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

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

355:デフォルトの名無しさん
07/07/04 20:08:58
サリーさんのような嫁が欲しい

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

357:デフォルトの名無しさん
07/07/04 22:44:35
>>349>>356
全くの見当違いですので。

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

359:デフォルトの名無しさん
07/07/05 13:47:10
カリー化と引数の数は関係ないんじゃ?

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


361:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/05 18:50:26
mat =
  1 = 2 = 3 =
  4 = 5 = 6 =
  7 = 8 = 9;

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

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

364:デフォルトの名無しさん
07/07/05 21:35:22
= は右結合だったな・・・。
<< でいいや。

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


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

367:デフォルトの名無しさん
07/07/06 13:04:57
URLリンク(sheepman.sakura.ne.jp)

#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:デフォルトの名無しさん
07/07/06 13:23:22
>>365
誰もクラス外部での話に限定してなかったけどな。

369:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/06 18:14:44
最適化なら・・・最適化ならきっとなんとかしてくれる・・・!!

371:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/07 09:40:53
>>371
へぇーやってみよ

373:デフォルトの名無しさん
07/07/07 17:38:23
二版出るって。タプルのために買おうかな。
URLリンク(www.kmonos.net)

374:デフォルトの名無しさん
07/07/07 17:44:38
いつの間にか、circular_bufferが削除されてる……?
URLリンク(svn.boost.org)

一体何があった?

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

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

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

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

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

378:デフォルトの名無しさん
07/07/07 23:03:17
そんなニッチな本売れねーよ

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

380:デフォルトの名無しさん
07/07/07 23:44:10
C++の本自体もうあまりでねーだろうが・・・

381:デフォルトの名無しさん
07/07/07 23:44:38
>>380

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

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

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


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


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

386:デフォルトの名無しさん
07/07/08 07:00:42
お化けのqueue太郎が復刊されるらしいね

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

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



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch