Boostを語れゴラァ part5
■ このスレッドは過去ログ倉庫に格納されています
0001BOOTS
2007/10/18(木) 08:09:35過去スレ
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0556デフォルトの名無しさん
2008/02/20(水) 10:16:18C++/CLIだとC#からダイレクトに橋渡しするより楽なん?
0557デフォルトの名無しさん
2008/02/20(水) 10:17:510558デフォルトの名無しさん
2008/02/20(水) 14:07:07クラスとかC++の機能を使ったライブラリが難なく取り込めたり、
<windows.h>ほか多数のヘッダが存在するから
関数プロトタイプをいちいち調べて書かなくてよかったりする。
0559デフォルトの名無しさん
2008/02/21(木) 00:06:52みんなはどのタイミングのをビルドしてる?
0560デフォルトの名無しさん
2008/02/21(木) 07:52:59あとは気が向いたら。
ビルドしたものは全部残しているから何か挙動がおかしければ
自分のプログラムのユニットテストで引っ掛かるからすぐ戻す。
いままで戻したことは無いけど。
ユニットテストは特にフレームワークを使っている訳じゃなくて
単にアサーションの連続だけど。
0561デフォルトの名無しさん
2008/02/21(木) 14:18:470562デフォルトの名無しさん
2008/02/21(木) 16:42:200563デフォルトの名無しさん
2008/02/21(木) 23:57:33boost::regexpを利用したテストツールらしいのですが、
ttp://www.vector.co.jp/soft/winnt/util/se385428.html
(?<=)が使えなかったので。
このソフト固有の問題ですかね
0564デフォルトの名無しさん
2008/02/22(金) 00:14:290565デフォルトの名無しさん
2008/02/22(金) 01:34:09は1クラスしか対応してない?
class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<IClass>
,boost::enable_shared_from_this<IName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
0566デフォルトの名無しさん
2008/02/22(金) 01:42:23class MyName
:public IClass
,public IName
,boost::enable_shared_from_this<MyName>
{
public:
virtual boost::shared_ptr<IClass> get_class()
{
return shared_from_this();
}
virtual boost::shared_ptr<IName> get_name()
{
return shared_from_this();
}
};
T*からU*へ暗黙の変換が可能なら、shared_ptr<T>からshared_ptr<U>への暗黙の変換も可能。
0567デフォルトの名無しさん
2008/02/22(金) 01:42:460568565
2008/02/22(金) 02:09:54bad_weak_ptr飛んでくる
0569デフォルトの名無しさん
2008/02/22(金) 02:20:29get_classやget_nameを呼んでいるなんてことはないよね?
0571デフォルトの名無しさん
2008/02/22(金) 02:40:490572デフォルトの名無しさん
2008/02/22(金) 02:55:000573デフォルトの名無しさん
2008/02/22(金) 02:59:540574デフォルトの名無しさん
2008/02/22(金) 03:05:350575デフォルトの名無しさん
2008/02/22(金) 16:34:29もう消えます・・・
0576デフォルトの名無しさん
2008/02/22(金) 17:10:02消える必要までは感じないが、過去レスを見てから、死ぬがよい。
0577デフォルトの名無しさん
2008/02/22(金) 17:43:18皆さん達者で
0578デフォルトの名無しさん
2008/02/22(金) 18:43:17lambda::bindでstdcallな関数を使いたい場合は方法ってあるんでしょうか。
VC++2008です。
vector<ATL::CString> v; ってのを使ってて大文字小文字無視ソートがしたくて、
sort(v.begin(), v.end(), boost::lambda::bind(lstrcmpi, _1, _2) < 0);
これだとエラー。cdeclなCRT関数使うと動く…
sort(v.begin(), v.end(), boost::lambda::bind(_tcsicmp, _1, _2) < 0);
もちろん大文字小文字を無視しないソートするだけなら
sort(v.begin(), v.end(), _1 < _2);
なんだけど…
0579デフォルトの名無しさん
2008/02/23(土) 17:09:40ちょっと使ってみたら、確かにデフォルトnew、deleteより
全然速かったんだけど、手放せないという人いる?
0580デフォルトの名無しさん
2008/02/23(土) 17:42:29boost::scoped_ptr の変種って便利じゃね?
0581デフォルトの名無しさん
2008/02/23(土) 18:14:53普通にコピーコンストラクタ組むのとあんまり手間変わらんし。
0582デフォルトの名無しさん
2008/02/23(土) 18:17:45>>580は要するに最大sizeが1のvectorだから、設計上の困難はなさそうだけど
0583デフォルトの名無しさん
2008/02/23(土) 18:27:10多種多様な意味付け方があるし、コピーだって同じだよ。
Lispみたいにメモリ管理については無視していい言語でさえ、
同値性は4つの述語関数がある。
>>581はそういうこと言っていると思う。
まあどれか決め撃ちで作ったり、
テンプレートでコンパイル時に選べるのを作るのは面白いと思う。
0584デフォルトの名無しさん
2008/02/23(土) 18:41:17その色んな意味付けから一つ選んでコピーコンストラクタの振る舞いを決めるのがC++のやりかたじゃないか?
実際にコピーを行う側は盲目的にコピーコンストラクタを呼んで、実際にどこまで深くコピーするかはコピーコンストラクタが決める
同様に、C++には標準的な同値性は二種類しかない
オブジェクトとしての同一性と、operator==
0585581
2008/02/23(土) 18:59:10むむむ?なんかハッキリしないなぁ
値の振舞いとの違いは何?boost::scoped_ptrに何を期待してるの?
0586デフォルトの名無しさん
2008/02/23(土) 19:04:580587584
2008/02/23(土) 19:05:26俺は>>580じゃないよ
値との違いは、NULLになり得るとか、resetが使えるとか、コピーなしでswapできるとか、そんなんじゃね
0588581
2008/02/23(土) 19:58:46その程度だと「boost::any使ってみたら?」でお仕舞いだなあ。
多態は使えんけど。
0589デフォルトの名無しさん
2008/02/23(土) 20:02:38...
scoped_ptr<B> p;
...
};
A a;
で,p の指している先のオブジェクトに dereference するには
*(a->p) って書くと思うんですが。a->p まで書いていちいち
前に戻って *( って書くしかないですかね。
左から右に自然と書きたければ a->p.operator*() とか?
0590デフォルトの名無しさん
2008/02/23(土) 20:04:510591デフォルトの名無しさん
2008/02/23(土) 20:14:300592デフォルトの名無しさん
2008/02/23(土) 20:20:280593デフォルトの名無しさん
2008/02/23(土) 20:24:05あ、いや、なんでもないです。。。
0594デフォルトの名無しさん
2008/02/23(土) 20:24:140595デフォルトの名無しさん
2008/02/23(土) 20:34:300596デフォルトの名無しさん
2008/02/23(土) 20:41:29先に -> が働いてから * が働くのか。
0597デフォルトの名無しさん
2008/02/23(土) 22:30:580598デフォルトの名無しさん
2008/02/23(土) 22:35:480599デフォルトの名無しさん
2008/02/23(土) 22:53:07言語ごとに演算子の優先順位が違ったりするし。
0600デフォルトの名無しさん
2008/02/23(土) 22:53:080601デフォルトの名無しさん
2008/02/23(土) 23:12:000602デフォルトの名無しさん
2008/02/23(土) 23:17:070603デフォルトの名無しさん
2008/02/23(土) 23:43:110604デフォルトの名無しさん
2008/02/24(日) 02:10:180605デフォルトの名無しさん
2008/02/24(日) 03:23:540606デフォルトの名無しさん
2008/02/24(日) 06:23:10shared_ptr のノリで書いてるとついつい reset で代入しようとしてしまう
0607デフォルトの名無しさん
2008/02/24(日) 10:45:24単に reset しなけりゃいいじゃんといわれればそれまでだけど.
0608デフォルトの名無しさん
2008/02/24(日) 11:21:250609デフォルトの名無しさん
2008/02/24(日) 11:58:030610デフォルトの名無しさん
2008/02/24(日) 12:14:18std::scoped_ptr<X> pX;
A : pX(new X) {}
}
もうね、コンストラクタの初期化リストで初期化した後は
一切触りたくないわけさ。ところで new X に失敗したら
コンストラクタ中で throw std::bad_alloc() していい?
0611デフォルトの名無しさん
2008/02/24(日) 12:15:410612デフォルトの名無しさん
2008/02/24(日) 12:16:55pXをconstにすればresetできなくなる。swapもできなくなるけど。
0613デフォルトの名無しさん
2008/02/24(日) 12:49:57そ、そうじゃん・・・
なんで今まで気づかなかったんだろ、俺。
0614デフォルトの名無しさん
2008/02/24(日) 18:19:40期待してたのに
0615デフォルトの名無しさん
2008/02/24(日) 18:31:28逆は良く見るんだけど。。。
0616デフォルトの名無しさん
2008/02/24(日) 19:24:550617デフォルトの名無しさん
2008/02/24(日) 19:58:55よく知らんけど、あれって汎用の言語ラッパとしては使えないんだっけ。
SWIGみたいな。でないとあまり Boost でやる意味ないような…
0618デフォルトの名無しさん
2008/02/24(日) 20:02:130619デフォルトの名無しさん
2008/02/24(日) 20:30:51だってプロトタイプが他の言語で C++ とずいぶん毛色が違うから.
まぁ boost 関係なく Mozilla のつくってる JavaScript の
エンジン使えばいいんだけどね.
0620デフォルトの名無しさん
2008/02/24(日) 21:31:500621デフォルトの名無しさん
2008/02/24(日) 22:04:070622デフォルトの名無しさん
2008/02/24(日) 22:09:31Boost.LangBinding というプロジェクトがあるそうだが停滞してるみたいね。
0623デフォルトの名無しさん
2008/02/24(日) 22:30:22そもそもboostはC++べったりだから。
0624デフォルトの名無しさん
2008/02/24(日) 22:34:18当たり前だろ
0625デフォルトの名無しさん
2008/02/24(日) 22:46:14他の言語でどうのこうの言う方がまぬけだよな
0626デフォルトの名無しさん
2008/02/25(月) 02:09:330627デフォルトの名無しさん
2008/02/25(月) 02:18:370628デフォルトの名無しさん
2008/02/25(月) 02:20:49>>615
pythonドキュメントのapi.pdf参照
0629デフォルトの名無しさん
2008/02/25(月) 18:41:59日本語を出力すると文字コードがすべてSJISになってしまっています。
しかし、XMLにはUTF-8との記述があり、正常なXMLにはなっていません。
内部ではwchar_t使っているので、できればUnicodeで処理したいのですが
そのようにするにはどうしたらいいでしょうか?
0630デフォルトの名無しさん
2008/02/25(月) 18:48:14それでいろいろやってみます。
0631デフォルトの名無しさん
2008/02/25(月) 18:58:51http://d.hatena.ne.jp/niitsuma/20080209/1203184397
リンク集ならあるよ
0632デフォルトの名無しさん
2008/02/25(月) 19:15:09見て回ります。
0633デフォルトの名無しさん
2008/03/01(土) 18:20:28http://pc11.2ch.net/test/read.cgi/tech/1139266461/
0634デフォルトの名無しさん
2008/03/01(土) 22:33:360635デフォルトの名無しさん
2008/03/01(土) 22:50:271.35も大分安定してきたみたいだね
0636デフォルトの名無しさん
2008/03/01(土) 23:06:500637デフォルトの名無しさん
2008/03/02(日) 04:00:28n個の要素を受け取るシーケンス
(1, 2, 3, ... n)(1, 2, 3, ... n)(1, 2, 3, ... n) ... (1, 2, 3, ... n)
ってないの?作って良い?
0638デフォルトの名無しさん
2008/03/02(日) 04:53:34-----------------------
//t00.cpp
#include<iostream>
using namespace std;
#include <boost/numeric/ublas/matrix.hpp>
using namespace boost::numeric::ublas;
int main()
{
matrix<int> mat0(2,2);
for(int i=0; i<2; ++i){
for(int j=0; j<2; ++j){
mat0(i,j)=0;
}
}
return 0;
}
-----------------------
をコンパイルするためのMakefileを以下のように書いたのですが、
うまく行きません。
0639デフォルトの名無しさん
2008/03/02(日) 04:54:10-----------------------
CC = g++
OBJS = ./t00.o
OPTION = -I/home/hoge/usr/include/boost-1_34_1/
#OPTION =
PROGRAM = ./t00
.cpp.o :
$(CC) -Wall -g -c $< -o $@
$(PROGRAM) : $(OBJS)
$(CC) $(OBJS) -o $(PROGRAM) $(OPTION)
clean :
rm -f $(OBJS)
-----------------------
boostは、/home/hoge/usr にインストールしました。
gcc バージョン 4.2.2 を使用しています。
g++ t00.cpp -o t00 -I /home/hoge/usr/include/boost-1_34_1/
でコンパイルできたので、同じようにMakefileに書いたつもりなのですが・・・
宜しくお願いします。
0640デフォルトの名無しさん
2008/03/02(日) 05:07:52なんで、どう「うまくいかない」のか書かないの?
何かの実験? 挑戦? 出題? エスパーの発掘?
0641デフォルトの名無しさん
2008/03/02(日) 05:31:330642デフォルトの名無しさん
2008/03/02(日) 12:33:13Civilization4っていうゲームが、boost.python使ってた。
(インストールフォルダに、boost_python-vc71-mt-1_32.dllっていう見覚えのあるDLLが…)
Pythonでキャラクターの動きやUIの一部を書き換えられるようになってて、おかげでユーザーコミュニティが作った拡張が盛り上がってる。
一部は公式の拡張パックに取り入れられたり。
Pythonのおかげというよりは、ユーザーのいじれる部分をうまく切り出してる設計がよかったんだろうけど。
C++のソースも少しだけ公開されてたんだが特にboostばりばりって感じでもなかったな。
どちらかというと昔から見るような大クラス主義のC++。
0643デフォルトの名無しさん
2008/03/02(日) 12:38:50ソースみたいです。
インターネットで公開しているんですか?
0644デフォルトの名無しさん
2008/03/02(日) 12:44:19そういう使い方もできるのか
組み込みというとLuaしか思い浮かばなかったがちょっと調べてみる
0645643
2008/03/02(日) 12:45:47http://www.gamershell.com/download_13312.shtml
0646デフォルトの名無しさん
2008/03/02(日) 13:55:31>>640
言葉足らずですみませんでした。
コンパイルがうまく行きません。
make時のエラーは以下の通りです。
g++ -Wall -g -c t00.cpp -o t00.o
t00.cpp:4:43: error: boost/numeric/ublas/matrix.hpp: そのようなファイルやディレ クトリはありません
t00.cpp:5: error: 'boost' has not been declared
t00.cpp:5: error: 'ublas' is not a namespace-name
t00.cpp:5: error: expected namespace-name before ';' token
t00.cpp: In function 'int main()':
t00.cpp:9: error: 'matrix' was not declared in this scope
t00.cpp:9: error: expected primary-expression before 'int'
t00.cpp:9: error: expected `;' before 'int'
t00.cpp:12: error: 'mat0' was not declared in this scope
make: *** [t00.o] エラー 1
0647デフォルトの名無しさん
2008/03/02(日) 14:06:03--
.cpp.o :
$(CC) -Wall -g -c $< -o $@
--
どう見ても、OPTION渡してないじゃん。
スレ違いだからこれ以上ここで質問するなよ。
0648デフォルトの名無しさん
2008/03/02(日) 14:52:02ありがとうございました。
スレ違い申し訳ないです。
0649デフォルトの名無しさん
2008/03/03(月) 08:19:410650デフォルトの名無しさん
2008/03/03(月) 15:11:45Windowsのコンテナ系コントロール(リストボックス、コンボボックス、
リストビュー類)用のイテレータを定義してみた。
MyListBox box;
...
BOOST_FOREACH(MyCtrlItem<MyListBox>& e, box)
{
if(e.GetSel())
{
...
}
}
こんな風に使えて、かつコントロールの種類に関係なく列挙・操作できる
ようになったけど、こういう使い方ってアリなのかね?
0651デフォルトの名無しさん
2008/03/03(月) 15:21:20どうせなら、MFCを超える勢いで頼む。
0652デフォルトの名無しさん
2008/03/03(月) 15:52:18自分としてはWTLの拡張クラスみたいなもの作って使ってるんでMFCは比較対象外だなぁ。
あとFileFind系とDropFiles系もイテレート可能にしてみた。これも割と便利かも。
0653デフォルトの名無しさん
2008/03/03(月) 16:08:18www.stlsoft.org
0654デフォルトの名無しさん
2008/03/03(月) 16:10:260655デフォルトの名無しさん
2008/03/03(月) 16:17:320656デフォルトの名無しさん
2008/03/03(月) 16:44:40■ このスレッドは過去ログ倉庫に格納されています