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/
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 自分のメモ程度の物でいいんじゃないの? そういうサイトも結構役に立つんだよね、暗中模索しちゃったときとか