にゃははー

はへらー

ライブラリ関係

AoSとSoAなflat_map

std::mapを線形配列に落とし込むことで、イテレータ走査やメモリレイアウトを効率化したflat_mapについては以前説明しました。 flast.hateblo.jp 当時私が実装したflat_mapはArray of Structure(AoS)形式の実装で、構造体を線形配列に配置するものでした。こ…

平らな地図、もといflat_map

この記事は C++ Advent Calendar 2021 の8日目です。 ブログもAdvent Calendarも、ものすごく久しぶりになってしまいました。あの頃カラオケで規格書を開いて語り合っていた面子も見なくなり、最近の新しい仕様はよくわからないです。歳をとったものです。

gnome.orgのドキュメントが違う件

Growl for Linuxのlibnotify対応が高まってるらしいので久々にlibnotify叩くかと思って何か違和感がggg、、、ドキュメントがちげぇ!!!!http://developer.gnome.org/libnotify/0.7/NotifyNotification.html#notify-notification-new notify_notification_…

narrowing conversionを考慮したis_convertible

ってかnarrowing conversionを知らんって人のほうが多いか。 これはC++0xからの破壊的変更のひとつで、unified initializerを使った場合に暗黙の型変換を行わないっていうもの。 例えば、 int x[] = { 0.0 }; ってのはC++03では通ってて、double->intの暗黙…

エスケープシーケンス

って覚えんのめんどいしやばいので適当に書いてる。(って前に書いたような... https://github.com/Flast/trance/tree/manip masterとはマージしてないのでいくつかの部分は古いまんまなのでいつマージするか...これ見て思い出した。 コンソールの文字色を変…

詳細は明日とか言っときながら全然書いてなかったけど明日を定義してなかったから問題なかった

ということでとりえあえずTrance.Configの説明 http://d.hatena.ne.jp/Flast/20110506/1304696074 ファイルは https://github.com/Flast/trance/blob/master/trance/config.hpp です細かい説明が面倒なんで、Boost.Configのdoc Macros that describe possibl…

library Trance.Config is new Boost.Config with record ... end record;

https://github.com/Flast/trance/blob/master/trance/config.hppつかれた・・・ 詳細は明日・・・

Trance.TypeInfoを改良

https://github.com/Flast/trance/blob/master/trance/typeinfo.hpp といっても http://d.hatena.ne.jp/RiSK/20110504/1304495091 をもとにデマングル失敗時に例外を投げるように修正する程度ですが。あと、TRANCE_TYPEIDを修正してconst prvalueを返すよう…

Boost.Configぅぅぅぅぅぅぅぅぅっぅ

Boost.ConfigにはBOOST_NO_*といったコンパイラ対応等に関するマクロがありますが、これには問題があります。 例えば #include <boost/config.hpp> void hogehoge() #if !defined( BOOST_NO_NOEXCEPT ) noexcept #endif { fugafuga ... } のようなソースを書いたとき、BOOST_NO</boost/config.hpp>…

trance/typeinfo.hppは壊滅的に使いづらいだろうことは自明なので

xvalue(prvalue)つくりまくるバージョンの楽につかえるやつを追加しました。 #include <iostream> using namespace std; #include <trance/typeinfo.hpp> int main() { cout << TRANCE_TYPEID( int ).demangled_name() << endl << TRANCE_TYPEID( 0 ).demangled_name() << endl; } で、 int </trance/typeinfo.hpp></iostream>…

エスケープシーケンス(端末の)とか使えたらいいなー

って感じでちまちま書いてる。https://github.com/Flast/trance/tree/manip/trance/iostreams使い方は #include <iostream> #include <trance/iostreams/escape_sequence.hpp> int main() { std::cout << trance::iostreams::red << "red!!" << trance::iostreams::reset << std::endl; } って感じreset呼ばな</trance/iostreams/escape_sequence.hpp></iostream>…

GMPのラッパー

gmpxxが非常に残念だという話を博士課程の方から聞いたので薄いラッパーを書いてみてる。 まだ初等関数部分はラップしてないけど基本的な演算ならできるはず。https://github.com/Flast/trance/tree/gmp/trance/gmpまだmpz_tのラップしか出来てないけどその…

trance/typeinfo.hppを修正

今までのは int i = 0; TRANCE_TYPEID_BY_EXPR( i++ ); cout << i << endl; とすると1が表示されてしまっていました。 これは非常にまずいので、修正しました。現在の実装だと上のコードを実行しても0が表示されるようになっています。

type_infoのラッパー

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

オレオレライブラリまとめ?(備忘録)

気がついたら追加するかも「俺のライブラリ? ほしけりゃくれてやる。探して見ろ。この世の全てをそこに置いてきた。」世はまさに超並列時代! コミュニティレベル Boost http://www.boost.org/ C++界で最強のオレオレライブラリ?Boostの名前を知らない奴は…

VDPAUを叩いてみる

hatenaさんマジhatenaってことで、自動バックアップにチェックを入れてもバックアップされなかったので、一回吹っ飛んでるせいで相当書く気力が削がれました。 なので相当荒い内容になっているはずです・・・VDPAUっていうnVidia様が作ってくれた神がかった…

SHA512のその後

ここでも書いたけど、SHA512の演算速度が遅い件について。 ふと思いついたというか気づくの遅すぎたんだけど、g++に-O3(最適化引数)を与えてみたら、普通に同レベルで動作・・・。さすが最適化。一回Intelの最適化リファレンスマニュアルをしっかり目を通さ…