C++

Boost.PtrContainer

Boost.PtrContainerのptr_array<>というのを使ってみました. 中身をポインタとして保持して,アクセスする時はポインタの先の参照を返してくれる粋なやつです. ptr_array<>はptr_vector<>とかに比べてちょっと特殊かも. 実体の供給方法とかnullの保持とか…

PropertyTreeのptreeをiterationする

ちょっと調べたのでメモです.以下の様なiniファイルのKeywordsを順番にiterationしていくのが目的です.// trends.ini [Keywords] 触手 = 秋猫 しまぱん = 桜花 縞ぱん = 桜花 縞パン = 桜花 #include <iostream> #include <boost/property_tree/ini_parser.hpp> namespace ptl = boost::property_tree; in</boost/property_tree/ini_parser.hpp></iostream>…

AnyPtrとxtal::undefinedの比較

バージョンはXtal Unofficial Wikiのr429です. Xtalスクリプトで定義したbooleanの値を取得しようとした所,undefinedと==が成り立っちゃいました. // .xtal bool_true : true; bool_false : false; // .cpp const xtal::CodePtr& code = load_and_call(th…

普通のBoostプログラミング

この記事はC++ Advent Calendar jp 2010 : ATNDの7日目の記事です. 他の記事と比べちゃダメです. わたしはほんわか担当なので. テーマは(自分の力量制限により)「普通のBoostプログラミング」です. 最近Boostを使ったコード片の比較的つまらなくなさそ…

Boost.MultiArrayでresize()やview()がコンパイルできない件

1つ前の記事(と言っても11ヶ月前のですがw)の解決方法です. いえ,解決自体はもっと前にしてたのですがメモをしていなかったので.参考: compiler bug in msvc10 with std::copy _HAS_ITERATOR_DEBUGGING | Microsoft Docs これによると,MSVC2010のstd…

VS2010でMultiArray::resize()が使えない?

VS2010 beta2で次のコードがコンパイルエラーになります. VS2008 EEだと通るんですけどね. #include <boost/multi_array.hpp> int main(){ boost::multi_array<int, 2> ary(boost::extents[1][2]); ary.resize(boost::extents[2][3]); } error C2665: 'std::_Copy' : none of the 2 overlo</int,></boost/multi_array.hpp>…

セマフォ

Boost.Threadにセマフォが無いのでどうしようかと思いましたが,Boost.Interprocessにあるんですね. 単純にそれを使ってみました. 超シンプルです. #include <cstddef> #include <iostream> #include <boost/thread/thread.hpp> #include <boost/interprocess/sync/named_semaphore.hpp> const std::size_t create_threads_number = 5; const std::si</boost/interprocess/sync/named_semaphore.hpp></boost/thread/thread.hpp></iostream></cstddef>…

三項演算子のようなもの

C++

とあるC言語で書かれたソースコードを見ていたのですが,こんなのがありました. #define some_value (foo ? bar : baz) ... void some_func(){ some_value = qux; } some_valueはファイルの先頭で定義されていて,複数の関数内で使われていました.うーん・…

staticなdestructorでファイル出力(VC)

C++

半年振りの日記です.やっと落ち着きました・・・. どうも以下の挙動が理解できない. #include <fstream> class foo { public: ~foo(){ std::ofstream fout("out.txt"); //*1 } }; int main(){ static foo f; //*2 std::ofstream fin; //*3 } 上のプログラムをVS200</fstream>…

deviceの管理

DirectXで描画をする時はDeviceが必要なわけだが,どうにもこれがめんどくさい. struct directx { LPDIRECT3DDEVICE9 device() const; // ... }; struct texture { bool create(LPDIRECT3DDEVICE9 device, const std::string& file_path); // ... }; なんて…

com_ptr

DirectXのCOM用のスマートポインタcom_ptr<>を書いてみた.assertは書いてないけど. 合ってるのか不安だがw #ifndef YUKIMI__UTILITY__COM_PTR_HPP #define YUKIMI__UTILITY__COM_PTR_HPP /// /// @file /yukimi/utility/com_ptr.hpp /// @brief DirectXの…

iterator

C++

各イテレータのサポートする演算子. 入力イテレータ コピーコンストラクタ operator=() operator*() operator++() operator++(int) operator==() operator!=() 非再現性 出力イテレータ コピーコンストラクタ operator=() operator*() operator++() operato…

プログラミング言語を作ってみた.

C++

たぶん「難解プログラミング言語」に分類されるのかな.でも単にアセンブリを置き換えただけに近いww使える文字は + - * / | だけです.簡単でしょ? この言語の特徴の一つとして,構文エラーがありませんwwどんなにでたらめに書こうが構文として解釈さ…

ゆの in C++ 超ヘタレ版

C++

ヘタレ過ぎてごめんなさい. 単純すぎてつまらないかと思いますがww #include <iostream> const char* const strs[] = {"ひだりまりスケッチ", "x365"}; struct X_ { X_& operator/ (const X_& rhs) const{ static int i; std::cout << strs[i++]; } X_& operator< (</iostream>…

実験

C++

#include <ctime> #include <vector> #include <iostream> // 生まれてから死ぬまでの時間を計り,最期にそれを吐く class timer { clock_t begin_; public: timer(): begin_(clock()){ } ~timer() throw(){ clock_t end = clock(); double sec = end - begin_; sec /= ClOCKS_PER_SEC</iostream></vector></ctime>…

template friend in vc7.x

C++

msvc7.x以前ではtemplateに対してfriendできないらしいwww 苦肉の策. private: // devel # 苦肉の策の印 #if (_MSC_VER < 1400) public: #endif // (_MSV_VER < 1400) #if (_MSC_VER >= 1400) template<class WC, class GC> friend class afc::gui::custom_window; #endif //</class>…

fopen_s

C++

Visual Studio 2003にはfopen_sとか無かったw #if (_MSC_VER >= 1400) // 1400 == MSVC8.0(MSVS2005) errno_t err = _wfopen_s(&fp, path, mode); #else fp = _wfopen(path, mode); #endif

std::merge

コンテナへのイテレータが入ったコンテナをマージする.std::vector<>へのconst_iteratorが入ったstd::vector<>をstd::mergeする. なんか必要になったんで. 今回はintです. #include <algorithm> #include <functional> #include <iostream> #include <iterator> #include <vector> #include <boost/bind.hpp> // 参照先を返す</boost/bind.hpp></vector></iterator></iostream></functional></algorithm>…

std::bind*

C++

C++のbindを勉強しました.なるほどねー. #include <iostream> #include <vector> #include <functional> #include <algorithm> #include <boost/fcpp/prelude.hpp> int main(){ boost::fcpp::list<int> ls = boost::fcpp::enum_from_to(0, 9); std::vector<int> v; std::copy(ls.begin(), ls.end(), back_inserter(v)); std::copy(v.beg</int></int></boost/fcpp/prelude.hpp></algorithm></functional></vector></iostream>…

std::bind*って…

C++

std::bind*って引数が2つまでしか対応してないんだ…. Boost.Bindを使えってことか….

mapをsort

C++

mapのデータをmapのindexとは別の値でソートする.何か基本的すぎて別に書く必要はないかもしれないけど,覚書.AFClib.GUIで使うの.カテゴリには入れてないけど. 後暇つぶし(MHF内の時間が過ぎるのを待っているww ぁ,サンプルは生徒の点数を保存して…

BREW

C++

BREWなんてのがあるんだ.# wikipedia 面白そうだから暇ができたら使ってみたい.

ユークリッド互除法を…

C++

先生「ユークリッド互除法を,何の言語でもいいから実装してみて下さいね」と言ってRubyでの実装を見せてくれました. Rubyは知らないですけどw ということで,C++でユークリッド互除法を実装してみました. #include <iostream> // maxを求める(別に三項演算子でも</iostream>…

お互いの存在を確認する.

C++

お互いの存在を確認するクラスを作ろうと思ったんだけど,当然の如く上手くいかないwww 結構できてるんだけど,どうしても制約ができちゃうんだよなぁ. #include <afclib/utils/existence_panel.hpp> using afclib::utils::existence_panel; int main(){ existence_panel e0(0); { existenc</afclib/utils/existence_panel.hpp>…

C++ with MySQL

C++

C++でMySQLを扱いたいんだけど,うまく入らない.yumのパッケージにmysql-clientがないんだよ.ぐぐるとあるらしいんだけど. # yum list | grep mysql | grep clientの結果が空.rpmはあるけど本体をyumで入れてるので何か競合するらしい.バージョンは同じ…

vcの定数とか

C++

Macros - msdn http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclang/html/_predir_predefined_macros.asp __int8, __int16, __int32, __int64(C++) - msdn http://msdn2.microsoft.com/ja-jp/library/29dh1w7z(VS.71).aspx 便利.

while(*dst++ = *src++);

C++

while(*dst++ = *src++); 上の行は常に正しく(思った通りに)実行されるのかなぁ. プログラミング言語C++第三版 §6.2.5には「後置演算子を使えば,先に値を使ってからインクリメントすることができる」とあった. てことは, // while(*dst++ = *src++); w…

ゲームクラス設計

C++

GUI型ゲームのクラス設計ってどうやればいいんだろう.ってよく考えるけど,いいのが思いつかない…. #include <map> #include <boost/shared_ptr.hpp> #include <boost/weak_ptr.hpp> const unsigned SCREEN_TITLE = 0x0000; const unsigned SCREEN_MENU = 0x0001; enum message { msg_null, msg_change_scr</boost/weak_ptr.hpp></boost/shared_ptr.hpp></map>…

結局size_tって何?

C++

よく出てくるsize_tって結局何なのか.調べてみたらヘッダで定義されていて,size_of()が返す型らしい(定義?).size_tが保障しているのはunsigned integerのみで,サイズは実装依存. でもfread()とかfwrite()にも使われているんだよね. 複数のファイル…

任意のbit数の整数型を得る

C++

何か見出しばっかりwwまぁどうでもいいか. 一つ上のままじゃ何かくやしい?ので,こんなもの作ってみた.でもこれって安全? #include template struct int_size_type { typedef void type; };template<> struct int_size_type::digits> { typedef unsign…