C++

汎用Deleter

C++

C++ではメモリを自分で管理しなければならないので面倒だ.でもnewを使わずにスタック上に作ったオブジェクトは自動的に解放されるので,一時的にスコープのなかだけで使うオブジェクトなんかだとあまり気にする必要は無い.ところが,一時的に作るオブジェ…

c++の名前空間

C++

c++の名前空間,よくわかっていなかったのでちょっと実験してみた.c++の名前空間は,Javaのパッケージのような概念で,クラス名やグローバル変数などの,グローバルなスコープを持つ名前空間を分割するために用いられる.こういう仕掛けがないと,ライブラ…

cURLpp

C++

cURLというプログラムがある.コマンド名は小文字のcurlでRIA用言語のcurlと紛らわしいのだが,こちらはwgetのようなプログラム.要するにコマンドラインからwebコンテンツにアクセスするツールなのだが,拡張可能なようでさまざまなプロトコルに対応してい…

CからC++のライブラリを呼び出す

C++

大昔からある話だが,復習のためにやってみた.STLのlistをCから使ってみる.ポイントは, C++ でCから呼び出すためのラッパを書く ラッパ関数のプロトタイプ宣言は extern "C" で宣言する このとき,C++で読まれる場合とCから読まれる場合を__cplusplusで切…

recursive mutex

C++

mutexはスレッド間の排他処理をするための機構だが,一般的なthreadライブラリのデフォルトのmutexには大きな問題がある.あるmutexを既にlockしているthreadが再度同じmutexをlockしようとするとブロックしてしまうのだ.たとえば,thread bufferの例で,em…

boost lambda

C++

C++のライブラリ集boost.スレッド周りで使ってみようかと思っていたのだが,マニュアルを見ていたらlambdaとかあるので,思わずいじってしまった.lambdaとはまあ,いわゆる無名関数.C++ではSTLで関数オブジェクトを使うようになっているわけだが,関数オ…

boost thread

C++

lambdaに寄り道したが,threadのほう.condition variableとmutexを使って共有bufferを作ってみる. #include <iostream> #include <string> #include <boost/thread.hpp> #include <cstdlib> using namespace std; class buffer { list<int> queue; boost::condition_variable cond; boost::mutex mut; public:</int></cstdlib></boost/thread.hpp></string></iostream>…

C++ のtype_info.name()

C++

C++ではRTTIと呼ばれる機構によって,実行時の型情報が取得できる. これによって,動的に定まるオブジェクトの型を知ることができる. #include <typeinfo> #include <stdio.h> namespace test{ class A { public: virtual void m(){} // 1. 仮想メソッド宣言 }; class B : pub</stdio.h></typeinfo>…

C++プログラムのVC++へのポート

C++

何の因果かWindows上のVC++でプログラミングをしなければならなくなった.Javaはよく使っていたが,VC++を使うのは始めて.MSの処理系を使うのはMS-DOS 3のころMS-C 3.0を使ってバイトして以来だ.20数年も前の話.いくつか引っかかったので,自分の為にメモ…

C++ iostream での浮動小数点数フォーマット

C++

C++リハビリ中.本格的に使っていたのは,1993年ごろなので,もう15年も前. 完全に浦島太郎だ. あの頃は,テンプレートもまともに動かなかったものだなあ. namespaceもなかったし.わざわざ使わなくてもいい iostream を無理矢理使ってみているのだけど,浮動小数…