- 2008/02/10 08:25移植性の高いコードを書くためには
- Problem移植性の高いコードを書くには、どのようにしたら良いでしょうか?Solution移植性の高いコードを書くには、処理系に依存しないことが重要です。しかし、何が処理系依存であるか判断することは容易ではありません。本当に移植性の高いコードを書くためには、複数のコンパイラで常にコンパイル可能な状態に保つことです。実際にboostでは複数のコンパイラでコンパイルできることが要求されています。Bo ... [続きを読む]
|
- 2007/12/19 19:30 ハッシュコンテナ - Part3
- ようやくVisual Studio 2008がリリースされました。また、Google Sparse Hash 1.0.2やGCC 4.2.2もリリースされていることなので、三度、パフォーマンス測定を行うことにします。今回は、素直にGoogle Sparse Hash 1.0.2に含まれているtime_hash_mapでパフォーマンス測定を行います。先ずVisual Studio 2008ですが、Visual C++ 2008 Feature Pack Betaを用い、以下のコードを追加してstd::tr1::unordered_mapのパフォーマンス ... [続きを読む]
|
- 2007/10/29 18:15ハッシュコンテナ - Part2
- Google Sparse Hashのversion 0.9.1がリリースされました。前回の記事ではversion 0.6をLinux上(GCC)で性能比較を行いましたが、今回はversion 0.9.1をWindows上(Visual C++ 2005)で性能比較を行ってみました。最適化オプションは/O2で、処理時間の測定にはWindows Server 2003 Resource Kit Toolsのtimeitを使用しました。#include <iostream>#include <sstream>#include <map>#include < [続きを読む]
|
- 2007/10/23 19:46 日本語によるC++0xに関する記事
- Bookmarks・C++0x - Wikipedia・Technical Report 1 - Wikipedia・C++0xの言語拡張まとめ - Faith and Brave - C++で遊ぼう ... [続きを読む]
|
- 2007/08/03 06:23 foreach
- Problemstd::tr1::mem_fnやstd::tr1::bindを使わず、イテレータを使って自分でループ処理を書いてはいけませんか?SolutionAlgorithm vs Loopでも述べたように、ループ処理は極力避けることが望ましいです。あなたは、「C++にも他のプログラミング言語のようなforeachステートメントがあれば良いのに」と思うかもしれません。たしかにC++にはforeachステートメントはありませんが、boostにforeachステートメントを実 ... [続きを読む]
|
|
|
- 2007/07/14 01:32 Boost C++ Librariesプログラミング 第2版
- Boost C++ Librariesプログラミング 第2版稲葉 一浩 (2007/07)秀和システムこの商品の詳細を見るサポートページはこちら''準''標準ライブラリともいえるboostの解説書です。第2版では、Version 1.34に対応しており、Version 1.35の一部も先取りされています。boost使いは是非、手元に置いておきたい一冊です。 ... [続きを読む]
|
- 2007/07/08 14:40 std::tr1::bind
- Problemstd::tr1::bindとはいったい何なのでしょうか?Solutionstd::tr1::mem_fnのWidgetクラスのメンバ関数test()がint型の引数を一つ要求したとします。class Widget {public: ... void test(int n); // 自己テストを実行する。 ...};list<Widget*> lpw;コンテナのすべてのWidgetをテストするために、再びstd::for_eachを使用します。このような場合、std::mem_funやstd::tr1::mem_fn ... [続きを読む]
|
- 2007/06/17 03:44 More Effective C++
- 新訂版 More Effective C++スコット・メイヤーズ (2007/06/29)ピアソンエデュケーションこの商品の詳細を見るScott Meyers氏の名著Effective C++の続編です。続編といっても、今や改訂が進んだEffective C++より、内容的には古めかしく感じるかもしれませんが、より専門的な内容が書かれており、C++の専門家必読の書です。日本語版は、その翻訳内容に難があり、長らく絶版状態でしたが、この度、新訂版が出版されることになりま ... [続きを読む]
|
- 2007/05/15 22:45 std::tr1::mem_fn
- Problemstd::tr1::mem_fnとは、いったい何なのでしょうか?Solution次のようなWidgetクラスとコンテナがあるとします。class Widget {public: ... void test(); // 自己テストを実行する。 ...};vector<Widget> vw;list<Widget*> lpw;コンテナのすべてのWidgetをテストするには、当然のようにstd::for_eachの使用を思いつきます。このような場合に使用するのがstd::mem_fun_refとstd::mem_funで ... [続きを読む]
|
- 2007/05/01 09:23 ヒープ限定オブジェクト
- Problemあるクラスのインスタンスをヒープオブジェクトに限定したい場合、どのようにすれば良いでしょうか?Solutionコンストラクタとデストラクタをprivateにして、Creation MethodとDestraction Methodを用意します。class Object {public: static Object* createInstance() ... [続きを読む]
|
- 2007/04/26 21:54 非標準::copy_if
- Problemコンテナから条件を満たす要素のみをコピーしたい場合は、どのようにすれば良いでしょうか?Solution非標準ながら広く知られたcopy_if()アルゴリズムを使用しましょう。copy_if()に関しては、Bjarne Stroustrup氏がプログラミング言語C++第3版の中で残念なことに、copy_if()は、どうしたわけか標準ライブラリが提供するアルゴ ... [続きを読む]
|
- 2007/03/30 18:53 ハッシュコンテナ
- Problemstd::mapより高速なコンテナはありませんか?Solutionstd::mapは十分速いコンテナですが、より速いハッシュコンテナが存在します。代表的なハッシュコンテナ(の実装)としては次のようなものがあります。・次期C++標準unordered_map・SGI系hash_map・GoogleCode sparse_hash_map・Goog ... [続きを読む]
|
- 2007/03/13 19:54スマートポインタshared_ptr
- Problemshared_ptrとは、どのようなもなのでしょうか?Solutionshared_ptrとは、C++の次期バージョンC++0xに含まれるスマートポインタで、そのオリジナルはboostのboost::shared_ptrです。その働きはポインタをラップし、参照カウントがゼロになったときにポインタを自動的にdeleteします。#include <ios [続きを読む]
|