[表示 : 全て 最新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/

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