C++

STLをいろいろ使ってみようと思います 第5回 algorithm(2)

今回はalgorithmの2回目です。 今日のサンプルで使ってるメソッドはどれも使ったこと無かったです。 普段の開発で、"あれ?これが出来る関数がalgorithmに入ってたはずだ!"ってなることが目標なので、この調子でどんどんやっていけたら良いですね。 #inclu…

STLをいろいろ使ってみようと思います 第4回 algorithm(1)

今回からalgorithmを数回に分けてやっていきたいと思います。個人的にはfor_eachとラムダ式の組合せが大好きで、結構良く使うのですがsearchとかsort以外はそんなに使ったことがないのでいろいろ試していきたいと思います。 #include <iostream> #include <algorithm> #include <vector> #</vector></algorithm></iostream>…

STLをいろいろ使ってみようと思います 第2回 vector(2)

今日もvectorです。 #include <iostream> #include <vector> int main() { std::vector<int> v; for(int i = 0; i < 5; ++i) v.push_back(i); v.erase(v.begin() + 1); // 先頭の次の要素を削除する std::cout << "先頭の次を削除" << std::endl; for(std::vector<int>::iterator it = v.</int></int></vector></iostream>…

STLをいろいろ使ってみようと思います 第1回 vector(1)

第一回はvectorを取り上げたいと思います。まずは基本的な使い方。 #include <iostream> #include <vector> int main() { std::vector<int> v; v.push_back(1); // push_backで要素を末尾に追加 v.push_back(2); v.push_back(3); std::cout << std::endl << "イテレータでアクセス" <</int></vector></iostream>…

STLをいろいろ使ってみようと思います 第0回 はじめに

前回のデザインパターン企画で、毎日少しずつでもなんか書くってのはいいなぁと思ったので続けます。今日からはSTLの簡単なサンプルを書いて使い方を学んでいこうとおもいます。普段vectorや一部のalgorithmの関数は使ったりしますが、"list? deque? よくわ…

C++でデザインパターンを実装していこうよ 第23回 Iteratorパターン

ついに今回でこの企画も最後ですね。最後はIteratorパターンです。なんか理由があってIteratorを最後に持ってきたかというと、そういうわけでもなくて、ないわけでもなくて、、、というのは、IteratorパターンをC++で実装したところでほぼ意味が無いというか…

C++でデザインパターンを実装していこうよ 第22回 Interpreterパターン

興味深くはあるし、学んでよかったとは思うけれど…。自分が個人的に作るソフトに拡張用のスクリプト的なのをつけようとしたら、 http://code.google.com/p/chibi-scheme/ この辺のありもんを使えないかってまず考えるし、 自分でちゃんと作るならもっといろ…

C++でデザインパターンを実装していこうよ 第21回 Commandパターン

コマンドパターンです。アンドゥリドゥにつかえます。というか、呼び出し時と別のタイミングで必要なパラメタを渡しておけて、使うときは何も知らんでもExecute()を呼び出せばオブジェクト側で良い感じに実行してくれるってのがいいってはなしですね。http:/…

C++でデザインパターンを実装していこうよ 第20回 Proxyパターン

今回はProxyパターンです。今回のサンプルだとなんもメリットが無い感じですね。なんしか一枚皮をかぶせることによってオブジェクトの生成のタイミングを遅らせたり、アクセス権を設定したりとかいろいろできるよってことみたいです。汎用的な分抽象的ですが…

C++でデザインパターンを実装していこうよ 第19回 FlyWeightパターン

今回はFlyWeightパターンです。 とってもSingletonっぽいですね。ただ、一度生成したインスタンスをSingletonではインスタンスそのものがstaticとして持っていたのに対し、FlyWeightでは今回のサンプルだとCharacterFactoryがコレクションとして持っています…

C++でデザインパターンを実装していこうよ 第18回 Stateパターン

C#のコードだと.hと.cppに分けるみたいなことはないっぽいので、というかすくなくともサンプルコードではそういうことはないのでなんとなくそれっぽくC++で書いてきて、いままでほぼ問題なかったのでそのままだったんですが、今回はヘッダと分けたほうがよか…

C++でデザインパターンを実装していこうよ 第17回 Mementoパターン

オブジェクトの状態を保存する、ってやつですね。今回のサンプルで微妙なのはname_とかphone_とかがかぶっちゃってるところですね。今回の場合Mementoクラスがただのデータホルダクラスなんだから、SalesProspectクラスのメンバとしてMementoオブジェクトの…

C++でデザインパターンを実装していこうよ 第16回 Mediatorパターン

この企画の良い点は、あんまり考えなくてもコードをC++に書き直してるうちになんとなく"あーそういうことか"ってなるので、仕事が終わってから寝る前にビャってやってしまえる点です。良くない点はあんまり考えないし、わざわざいろいろ調べるほどには元気が…

C++でデザインパターンを実装していこうよ 第15回 ChainOfResponsibilityパターン

今回はChainOfResponsibilityパターンです。たらいまわし的なことでしょうか?まず、Approverクラスの子をSetSuccessor()メソッドで鎖状につなげます。そしたら、その鎖に対してひとつずつ引数として渡されたPurchaseオブジェクトを受け入れるか否かをProces…

C++でデザインパターンを実装していこうよ 第14回 Visitorパターン

今回は、Visitorパターンです。 初めて見たときは完全に"?"でしたが、今見ると少し面白いですね。訪問されるオブジェクト(例ではElementインタフェースの実装であるEmployeeとか)のコレクション(Employees)に、訪問するオブジェクト(IVisitorインタフェース…

C++でデザインパターンを実装していこうよ 第13回 Compositeパターン

今回はCompositeパターンです。要は、"フォルダはフォルダもファイルも一緒くたに格納できるよ"的なことですね。今回はPrimitiveElementは直線とか円とかの単純な図形で、CompositeElementはそれらの単純な図形やそれを組み合わせたCompositeElementを組み合…

C++でデザインパターンを実装していこうよ 第12回 Builderパターン

やっと半分きましたね。今回はBuilderパターンです。オブジェクトの生成に関するパターンとして、すでにAbstractFactoryパターンやFactoryMethodパターンを扱いましたね。これらがどっちかというと、"あるインタフェースのどの実装を実体化するか"的なことに…

C++でデザインパターンを実装していこうよ 第11回 Prototypeパターン

Prototypeパターンは、初めて知ったときもぴんときませんでしたが、いま読み直してもぴんときませんでした。今回の例で言えば、ColorPrototypeインタフェースの任意の子クラスのコピーコンストラクタを、子クラスの種類を知らなくてもclone()メソッドから呼…

C++でデザインパターンを実装していこうよ 第10回 FactoryMethodパターン

適切な実装の集合を実体化するという目的のパターンで、AbstractFactoryとあんまり変わりません。AbstractFactoryは委譲で行っていたことを、FactoryMethodパターンでは継承を使って行っている、と考えて良いんだと思います。「これはAbstractFactory!こっち…

C++でデザインパターンを実装していこうよ 第9回 Singletonパターン

Singletonパターンは非常にわかりやすいんじゃないでしょうか。Modern C++ Designには別の方法を使った書き方みたいなのものってましたね。http://www.dofactory.com/Patterns/PatternSingleton.aspx#_self2今回は普通にstaticなメンバを使った実装です。htt…

C++でデザインパターンを実装していこうよ 第8回 TemplateMethodパターン

初めてデザインパターンを学んだとき、一番理解しやすいと感じたのがTemplateMethodパターンでした。今回の例は http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self2 これです。なんかデータベースへのアクセスをしてますが、書き直したバージョ…

C++でデザインパターンを実装していこうよ 第7回 Observerパターン

http://www.dofactory.com/Patterns/PatternObserver.aspx#_self2 今回のお題は今までの中では一番良い感じかなと思います。株価(Stock::price_)が変わると投資家(Investor)に通知(Notify)が行きます。"株価が変わったら通知がいく"ってのは所謂共通性で、そ…

C++でデザインパターンを実装していこうよ 第6回 Decoratorパターン

まず今回のお題です。 http://www.dofactory.com/Patterns/PatternDecorator.aspx#_self2図書館で借りられるものというLibraryItemクラスから派生しているBookクラスとVideoクラスがあって、これにDecoratorパターンを使ってBorrowable(借りられる)という性…

C++でデザインパターンを実装していこうよ 第4回 Strategyパターン

"オブジェクト指向のこころ"で3つ目はStrategyパターンでしたね。別にその順にしなきゃならないわけではないのですが、とりあえず今回はStrategyパターンにします。今回のお題は http://www.dofactory.com/Patterns/PatternStrategy.aspx#_self2 です。C++…

C++でデザインパターンを実装していこうよ 第3回 Bridgeパターン

"オブジェクト指向のこころ"をはじめて読んだとき、Bridgeパターンで一度挫折しかけました。「実装から抽象的側面を切り出して、それらを独立して変更できるようにする」"オブジェクト指向のこころ"では、[抽象的側面]がShapeクラス、[実装]がDrawingクラス…

C++でデザインパターンを実装していこうよ 第2回 Adapterパターン

C++

"オブジェクト指向のこころ"で出てくる順番にとりあえず従って、今回はAdapterパターンです。今回も http://www.dofactory.com/Patterns/PatternAdapter.aspx#_self2 をC++に移植していきましょう。https://github.com/TakahashiShuuhei/DesignPatternPracti…

C++でデザインパターンを実装していこうよ 第1回 Facadeパターン

C++

Wikipediaによれば、 "関連するクラス群を使用するための手続きを、窓口となる一つのクラスに集約することにより、プログラムの冗長性を無くすことを目的とする。" http://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3ってことらしい…

shared_ptrの使い方を知りたかったからいろいろ試してみた (2)

C++

前回shared_ptrの使い方を適当に勉強したので、早速使ってみるぞーと思って使ってみたら"あれ?これどうすんだ?"ってことがあったのでそれらの確認をします。 constは? shared_ptrを引数で渡すにはとりあえずそのまま渡しても動きます #include "stdafx.h"…

shared_ptrの使い方を知りたかったからいろいろ試してみた

C++

タイトルのとおりです。 基本的な使用方法 まず基本的な使い方。 #include "stdafx.h" #include <memory> #include <iostream> class Hoge { public: Hoge(){} ~Hoge(){ std::cout << "Hogeのデストラクタだよ" << std::endl; } int number_; }; int _tmain(int argc, _TCHAR* </iostream></memory>…

C++をはじめて一年くらいたちました

C++

C++をはじめてちょうど一年くらいです。 大分慣れてきた感はありますが、 未だに基本的な部分がちゃんと理解できてないようなバグをたまに出すので、 確認していきます。 ポインタ まず大前提として。 class Hoge { public: int member_; double value_; voi…