- 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/
- 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 ]
- 意味がわからんならスルーしろよ
|

|