のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

C++

【ネタ】アッカーマン関数によるプログラミング言語最速決定戦?

皆さんこんにちは おげんきですか?私はげんきです。本日は最速決定戦やります。いやはやC++がはええええとかいいつつ 他の言語どうだっけなんて思う常日頃です。 エントリー 6つの言語で行いました C++,Java,PHP,Python,Ruby,Javascript 種目 アッカーマン…

Boost::Date 日付管理を行うライブラリ

皆さんこんにちは お元気ですか。私は元気です。さて、今日はBoostの中にある日付管理のライブラリを解説します。現在の日付を表示したり、間の日付を計算したり日付に関する処理を行うことができます。 コンパイルオプション g++ date.cpp -lboost_date_tim…

Boost Thread(1) マルチスレッドに挑戦してみよう

皆さんこんにちは お元気ですか?やりたいこと、やることが増えすぎて困ってるけど、まぁなんとかなるでしょう。実は以前、C++11でのThreadを紹介させて頂きました。 今回はBoostを使ったMultiThreadを紹介したいと思います。因みにこのライブラリOSが変わっ…

Boost::Timer 時間計測に使う

皆さんこんにちは お元気ですか。私は元気です。今日はBoost::Timerについて C++ではc_clockを使うことで時間を計測することができます。 しかし、 Timer 通常の使い方 #include <iostream> #include <cmath> #include <string> #include <boost/timer/timer.hpp> using namespace std; int main(int argc, ch</boost/timer/timer.hpp></string></cmath></iostream>…

Boost::Property_tree XML解析

皆さんこんにちは お元気ですか。私は元気です。さて、今日はXMLの解析並びに記述を行いたいと思います。 もれなく、boostに解析するライブラリがあります。 XML Parse 解析用XMLファイル <root> <person> <name>山田太郎</name> <address>東京都文京区</address> <gender>漢</gender> <age>42</age> </person> <person> <name>山田花子</name> <address>兵庫県神戸市</address> </person></root>

Boost Graph(1) グラフの表示をしてみましょう!

皆さんこんにちは お元気ですか。私は元気です。さて、今日はBoost Graphについて解説したいと思います。 このグラフはあれですよ、ほら有向グラフとかのグラフで折れ線グラフとかではありません。 グラフを構築する #include <fstream> #include <vector> #include <string> #include <boost/graph/adjacency_list.hpp></boost/graph/adjacency_list.hpp></string></vector></fstream>…

C++11 Enum Class

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日はC++11にあるEnum Classについて解説したいと思います。 enum class Number{ ONE, TWO, THREE, FOUR }; C++にて実装されているenumと比較して classを入れることで実現ができていますね。 使い方は…

C++11 に新たな乱数生成ライブラリ!?

C++

皆さんこんにちは お元気ですか。私は元気です。さて、今日は乱数についてC++11では新たに乱数を生成するライブラリが追加されています。 一様分布を作るとき、以前まで線形合同法で作成されていたのが、このライブラリではメルセンヌ・ツイスターなど選択が…

C++11 thread(2) mutex。さぁレッツマルチスレッド!

C++

皆さんこんにちは お元気ですか?私は元気です。さて、今回はmutexで使うlockについてまずはこのプログラムを動かしてみましょう。 mutex_lock mutexとは 複数のスレッドで動作させるときに 他に影響を与えたくない場合にロックをかけ、侵入できるスレッドを…

Boost::ublas(4) 逆行列と行列式

皆さんこんにちは お元気ですか。私は元気です。久々にublasのネタですね。 ところで、boost::ublasで逆行列と行列式を求めたいことありませんか?そこで、ライブラリを探すのですが…実は逆行列と行列式は存在しません。 要はつまり、実装しろと…しかし、逆…

graphvizとdoxygenでC++ソースコード解析

C++

皆さんこんにちは お元気ですか?私はげんきです。今日はコード解析について取り組みたいと思います。 人のソースコードって結構読むの面倒ではないでしょうか?なんか纏めてある書類とかあれば楽なのになぁとか思うことは多々あります。そんな貴方へ贈る今…

C++で素数を求めよう(エラトステネスの篩)

皆さんこんにちは お元気ですか。さて、本日は素数を求めてみます。素数とかいう不思議な値がこの世には有ります。普段の生活において何に使うのかよくわかりませんが、プログラミングのコンテストとかで素数を利用した解き方もあるようです。 素数の特徴 計…

DesignPattern Proxy(代理人ですね)

皆さんこんにちは お元気ですか。私は元気です。さて、今日はDesignPatternのProxyについて Proxy まぁ何やってても良く聞くワードですが、代理人という意味が篭っています。 自分がない部分の処理を他に移譲します。 無駄にクラスを拡張するなという意味も…

C++11 thread(1)普通に使う(引数とか)

C++

皆さんこんにちは お元気ですか。私はげんきです。さて、今日はC++11に搭載されたthreadについて これが便利なところはOSによって処理を行う関数が異なっていたのを threadライブラリが賄ってくれるという素晴らしきかな。 普通に使う #include <iostream> #include <thread> u</thread></iostream>…

C++(C) 意外に知らないconst修飾子の使い方

C++

皆さんこんにちは お元気ですか。私は眠いです。さて、今日はconst修飾子の使い方です。 constとは 基本的に内容を書き換えることができないものにつけくわえる修飾子(Javaでいうfinal) なぜこんなのが必要なのでしょうか?変数の値を保証したい時に使いま…

DesignPattern Decorator(まるでトッピング)

皆さんこんにちは お元気ですか。良いコードってなんだろう。今日はDecoratorと呼ばれるデザインパターンを紹介したいと思います。 Decoratorとは イメージとして基底があって上にのっていくイメージ 機能を追加していくのに便利なデザインパターンですね。 …

C++11 STL Array

C++

皆さんこんにちは お元気ですか?私は元気です。C++11の新機能のArrayについて記載したいと思います。 Array(STL)の特徴 STLのArrayには大きな特徴がひとつあります。 algorithmのヘッダーを使えるので、fillやfindを使えることですね。 実際のソースコード…

C++で書くフィボナッチ数列

C++

皆さんこんにちは お元気ですかたまには面白くフィボナッチ数列をC++で解いてみようかなと思います。 フィボナッチ数列って? 0 1 2 3 5 8 13・・・・・・・となるような結構有名な数列です。 今回3通りの解き方で解いてみたよ 再帰 非常に遅くて有名な再帰…

DesignPattern Composite(再帰処理)

皆さんこんにちは お元気ですか?私はふるふるしてます。お酒がきついーさて今日、DesignPatternのCompositeです。 CompistePatternとは 「容器と中身を同一視すること」とのことです。実装上では容器と中身のメソッドを統一し、 容器の中に更に容器があるよ…

C++ 関数ポインタ(メンバ関数+関数)

C++

皆さんこんにちは お元気ですか?私は元気です。さて、今日は関数ポインタについて 関数ポインタの利点 関数ポインタを使うと、テーブルとして関数を引けるので、処理が簡単になります。 例えば以下のようなコードが有ります。(add,mulは定義されているとし…

C++言語 プリプロセッサ及びプリプロセッサ変数

C++

皆さんこんにちわ お元気ですか?私は元気です。さて、本日はプリプロセッサについて #defineとか#ifdefとかがそれにあたりますね。 一番有名かつ使われてるのはおそらく#includeでしょうか。それらを解説していきましょう。 プリプロセッサって? ソースコ…

DesignPattern Bridge(新しく機能を追加したい貴方へ)

皆さんこんにちは お元気ですか。ねむいさて、本日はDesign Patternについて前回までは製造関係のデザインパターンの解説を行っていました。 今回からは構築についてのパターンを学習します。 Bridgeとは 日本語訳で「橋」ですね。つまりつなぐことかな 例え…

C++ STL vectorのメモリ解放

C++

皆さんこんにちは お元気ですか?私は眠いです!I love sleepingさて、今日は微妙なTips。STLのvectorです。 vectorの解放について このvector色々と使い勝手いいですよね。なんかオブジェクトとかフリーダムに入れれたり、ネストできたりと最高でございます…

C++ 単体テストツール CppUnitの使い方

皆さんこんにちは お元気ですか?私は元気です。今日はCppUnitについて解説していきたいと思います。 CppUnitとは? C++の単体テストを自動化するライブラリです。 インストール Homebrewを使いましょう。 brew install cppunit CppUnitの使い方 サンプルコ…

C++ 速度比較(7) unordered_map,mapの違い、速度の面から検討する

皆さんこんにちは お元気ですか。ふらふらしてます。さて、今日は速度比較を行おうと思います。概略については前回の記事を参考にしてください 実験 実験内容 1、全てをループした時に速度がどうなるか →iterater と foreach それぞれで検証するので4種類 …

C++ STL 意外に忘れるvectorの並び替え

C++

皆さんこんばんは お元気ですか?私は元気です。さて、本日はよーく忘れるstlのvectorの並び替え方 今回は文章が少ないですがいってみましょう。 まずは普通に vector<int> vect(5); vect[0] = 1;vect[1] = 100; vect[2] = 30; vect[3] = 20; vect[4] = 4; sort(v</int>…

Makefileとは(いちいちコンパイル打つコマンド覚えるのめんどくさいよな貴方へ)

皆さんこんにちは お元気ですか。私は汗をかいています 要は暑いのです。さて、本日はMakefileについて 皆さんMakefileを書いたこと有りますか? 使ったことない人、知らない人は是非使ってみましょう。 What is Makefile? makeコマンドを実行した時に それ…

C++11 unordered map(mapとは少し違うよー)

C++

皆さんこんにちは お元気ですか。早起きするとしんどいですね。さて、今日はC++11で実装されたunordered mapとやらを見てみよう。 unordered_mapって? C++11にて追加されたSTLです。 mapはTree構造で実装されているのに対し、unordered_mapはHashでの実装を…

DesignPattern Prototype(大量にコピーしよう)

皆さんこんにちは お元気ですか。私は本日はDesign PatternのPrototypeについて記載します。 Prototypeとは? 動作 一つインスタンスを生成するとそれらをコピーして複製を行うことをプロトタイプパターンといいます。 clone()メソッドで新しいオブジェクト…

qt4(1) インストールについて

C++

皆さんこんにちは お元気ですか?私は元気です。さて、本日はqtについて 皆さんは自分のプログラムをGUIで表示させたいとか思ったことありませんか?そんな時に利用するのがqtです。さてやってみよう インストール brew install qt4 実行 とりあえず、以下の…