C++

改訂新版C++ポケットリファレンスレビュー

前回のBoost.勉強会でいただいた 改訂新版C++ポケットリファレンス を一通りさらったのでレビュー(というか紹介)を書いておきます。 どんな本? この本は、目的から探せる形式でC++の(主に)標準ライブラリを解説した逆引きリファレンスです。 今回私が読んだ…

Boost.勉強会 #17 東京に参加

先日(2015/05/30)行われたBoost.勉強会 #17 東京に久々に参加してきました。 IIJ新社屋がめっちゃ綺麗でビビりつつ滑り込みセーフ(アウト)で会場着。 セッション資料は以下にまとまってます。 Boost.勉強会 #17 東京 タイムテーブル C++は適用ドメインがまっ…

Boost.勉強会#9 つくばとHaskellDayに参加

土日にBoost.つくば(5/26)とHaskellDay(5/27)に参加してきました。(っていつの間にやらもう木曜日じゃなイカ…。) どっちにも登壇してないものの二日連続はやはりキツイものがありました。簡単に振り返っておきます。 Boost.勉強会#9 つくば 初つくばでした。…

enable_ifにdecltypeを渡すとMSVC10が落ちる

C++

#include <iostream> #include <utility> #include <type_traits> template<typename C, typename V = void> struct enable_if : std::enable_if<C::value, V> { }; template<typename T> void sf (T const & t, typename enable_if<decltype(t)>::type * =0) { std::cout << "OK\n"; } int main () { sf(1); } ↓ [F5] ↓ fa…</decltype(t)></typename></c::value,></typename></type_traits></utility></iostream>

純粋関数型言語のfoldlで副作用を起こす

http://d.hatena.ne.jp/i_k_b/20120215/1329320486に触発されてCleanでも書いてみました。 module foldout import StdEnv // 出力する関数 (Fileは一意でなければならない) // class (<<<) infixl a :: !*File !a -> *File msg :== ["hello,", " uniqueness"…

Boost.勉強会#7で発表してきた

Boost.勉強会#7 progress_display追悼式でIntroduction to Boost.B-treeという題で発表してきました! Proposed Boost B-tree Libraryを訳した繋がりで、自分なりにBoost.B-treeの概要と使い方を紹介してきました。 これを見て、普通のコンテナと勘違いしてB…

サンクと継続の勉強会むずかった

池袋まで頑張って行って来ました. (私は呼び出し規約の辺りから参加).ATND 主催者(id:n7shi)さんのまとめ togetter(なぜか私の昼飯までまとめに入っているw 流れとしては, Xbyakを使ってsetjmp/longjmpを作ってからそれをリファインしていく感じ. サンクを…

BoostCon2011で発表されたB-treeライブラリの提案を翻訳しました

BoostCon2011で発表されたBeman DawesさんによるProposed Boost B-tree Libraryを和訳しました! 翻訳した資料はslideshareに挙げました。 boostjpからも辿れます。boostjpには他の方の資料へのリンクも張られるはずですのでご期待ください。Proposed boost …

Boost.勉強会#5 名古屋で発表しました!

速くも5回目となったBoost.勉強会がついに名古屋で開催されました. で, ついに登壇させらしてきました. (超緊張した…) boostjp#5 名古屋まとめ ゲリラUstも有りました 発表内容 左再帰を含むPEG(Parsing Expression Grammar)のメモ化手法と構文解析アルゴリ…

T*集合 => T const*集合 の変換にptr_vectorを使う

ポインタの集合をconstポインタの集合に渡す http://d.hatena.ne.jp/redboltz/20110218/1297989050 http://d.hatena.ne.jp/redboltz/20110413/1302698607 について. 元記事コメント欄に書いてあったptr_vectorのアロケータの指定をしてみたらあっさり出来た…

SMLでtype erasureできた

型に厳しいことで有名な言語であるStandard MLで C++でよく使われる,type erasure(型消去)パターンを実現する方法を紹介します. (* 斉藤さんのコメントによる指摘を受けて追記 *) fun op $ (f,x) = f x; infixr 1 $; (* コード中の行頭に - の付いた行はイン…

Boost.勉強会#4に行って来た

Boost.勉強会#4に行って来ました. 早くも4回目となりましたBoost.勉強会です. アキラさん相変わらずパワフルですね. お疲れ様でした.今回は午前開始にも関わらず遅刻しなかった!勝った! セッション セッション一覧 徐々に難易度が上がっております. より実…

C++で初Bitsの出

C++

最近C++成分が足りないので. ここで問題。0 の三連続、[0,0,0] が最初に現れる位置は、平均で何ビット目でしょう? 初Bitsの出 -- d.y.d. #include <iostream> #include <vector> #include <typeinfo> #include <ctime> #include <boost/range.hpp> #include <boost/range/adaptors.hpp> #include <boost/range/algorithm.hpp> #include <boost/assign.hpp> #include </boost/assign.hpp></boost/range/algorithm.hpp></boost/range/adaptors.hpp></boost/range.hpp></ctime></typeinfo></vector></iostream>

numeric_limitsはデフォルトで意味無い値を提供する

C++

C++のにある numeric_limitsテンプレート は, 実装依存のarithmetic typeに関する性質を提供します.テンプレートとは言っても, 実装依存の値を一般化して求めるなんて出来ないので, (というかそれを提供するのが目的) それぞれの型についての特殊化を定義し…

nullptr idiomでエラーになる

C++

C++0xで導入されるnullptrを C++03のライブラリレイヤでがんばるメソッド nullptrイディオム をゆっくり写経 …してみたらエラー. イディオムの詳細はC++Idiomsを参照. エラー1(というか03で対応できないケース) int main () { struct S { int f (void) const…

quickrun.vimでプリプロセスを実行

quickrunとは… *quickrun* は編集中のファイルの全体もしくは一部を実行する Vim プラグインです。 実行するためのコマンド QuickRun が提供されます。 https://github.com/ujihisa/quickrun/ です.要はvimで編集しているファイルを評価した結果を表示するプ…

binary-literal 0x(笑)

C++

C++にバイナリリテラルが欲しい? BOOST_BINARYなんてものも有りますが…なに?実装が力業過ぎでイヤ!? 仕方ないなあ.┐(´ー`)┌と, 言うわけで // 理想 BOOST_STATIC_ASSERT(( JEFUTY_BINARY(10)==2 )); BOOST_STATIC_ASSERT(( JEFUTY_BINARY(0010)==2 )); …

VariadicTemplatesに整数を渡す

C++

型(のparameter pack)だったらtupleに渡せばいいみたいだけど, intの並びだとstd::tupleは受け取ってくれないのでseqを定義した. namespace jefuty { namespace mpl { // 特殊化に使うためのintの並び template<int... XS> struct seq { }; // Seq中のN番目の要素にアク</int...>…

SDLビルド失敗

Cygwin上のgcc4でSDL-1.2.14をビルドしようとすると, ことごとく./configureでコケる. (WinXP32bit / Vista64bit両方とも同じ症状) CC=gcc-3 ./configure で行けた. gcc-3とか消さなくてよかったー(^^;; 出来上がったファイルはgcc4でコンパイルしたファイル…

C++テンプレートメタプログラミング読み終わった−!

ちょっと文章が直訳っぽくてところどころ不自然だけど,丁寧にBoost.MPLの実装(と使い方)について解説してあってとても分かり易い! 個人的な需要にぴったり合ってたこともあると思うけど,MPLの基本的なことを理解するにはかなり良い内容だと思います. ただ,…

第6章 演習問題 6-0 最小の型を見つけるメタ関数

読んでる本. C++テンプレートメタプログラミングの6章練習問題0問目. 何故か異常に手間取ったので書いておく. 問題は copyと手作りのインサータを使い, 型の列の中から最小の型を見つけるメタ関数smallestを作れ.BOOST_STATIC_ASSERT( (boost::is_same >::ty…

Boost.Propertyの使い方

C++

typoに突っ込んだだけだと嫌なのでwちょっと解説を書いてみる. ネタ元:Boost.Property実装案? -> id:xyuyuxさんが簡略化 -> C++でPropertyつづき1 簡略化された方についてです.(本家は長いのでパス) 使用例 class Hoge { template< typename Base > struct…

decltypeで取得した型内のネストした型を使う方法

C++

hoge bar; // みたいな宣言がg++でコンパイル通らんことが分かったが、かと言って対処法があるわけではなし… http://twitter.com/tanakh/statuses/4342143438 これを回避しようとして,decltypeで取得した型の内側で定義されている型に言及しようとすると,g++…

CodeComplete(上)読み終わった

CodeComplete(上)を読み終わった. 全体としてはかなりヒドイ内容だった. あんまり悪口は書きたくないので,知ってためになった内容からメモ. 12章(基本的なデータ型) Adaの範囲制限付き整数 type Age is range 0..99 こんな感じに書けて,勝手にアサート付けて…

わんくま@横浜行ってきた

快晴でした. 坂を登って暑かったけど景色よいので思わず撮影. 写真だと意外と開放感が伝わらないな…. みなとみらいが未来っぽい. すごく深いよ. これから温暖化に備えて東京を地下に造るべき. 内容 ポインタ経由のメンバ関数(non-virtual)は,ポインタが死ん…

第9章 擬似コードによるプログラミングまとめ

PPP Pseudocode Programming Process.疑似プログラミングプロセス.擬似コードを先に書いておき,コメントとして残す手法. 実装と対応するほどの詳細まで擬似コードを書くこと. コードをレビューすること コードの品質が悪いときは擬似コードまで戻ってやり直…

第8章 防御的プログラミング(?)

課題図書 その2CODE COMPLETE 第2版 上 完全なプログラミングを目指して作者: スティーブマコネル,Steve McConnell,クイープ出版社/メーカー: 日経BP社発売日: 2005/03/26メディア: 単行本購入: 44人 クリック: 1,166回この商品を含むブログ (288件) を見る…

14.6 問題 5 瓶詰め問題解いた

読み終わったけど,今朝やってみたら意外と解けたので書いておく. ヒープは簡単に実装できる割に凄い.でもプライオリティキューとか聞くとどうしても, スケジューラ->形式検証必須(平等とか)->手が出せないorz みたいな印象が…なぜだろう? 問題 それぞれ0か…

15.5問題8 K回以上重複する最長の部分文字列を探索

[前回の基本形に重複する回数を数える部分を追加しただけ. 入力に作ったテキストの末尾に,勝手に改行が追加されて鬱陶しかったのでヌル文字で上書き. :p // K回以上重複するフレーズを探索する void find_common_word(FILE * fp, int N, int K){ char * buff…

本当も何も元から難しいクイックソート

C++

id:sumii先生出題 本当はむずかしいクイックソートなんか大学でやったようなやってないような課題. 等価性の問題に乗り遅れた?今読んでる本[珠玉のプログラミング]に関連する内容なので考えてみた.参照先のページをコピペするとcygwin上でsegmentation faul…