タグ

c++に関するpapamitraのブックマーク (19)

  • Visual C++ 2010に追加されたSTLアルゴリズム

    この記事が公開される頃にはVisual Studio 2010のパッケージ販売が始まっているでしょうか。MSDN Subscriptionでは先行提供されていますし、各言語のExpress版が公開されていますから、初物(?)の好きなミナサマは早速遊んでいらっしゃることと思います。 C++屋の僕にとって一番嬉しかったのはVisual C++ 2010(vc10)でC++0xに(完全ではないにせよ)準拠してくれたこと。特にlambda式にはドキドキさせられました。lambda式のサポートにより、より明快でコンパクトな表現が可能になりました。正規表現(regex)や配列(array)、賢いポインタ(shared_ptr/weak_ptr)などなど、サポートが待ち望まれていたクラス群が追加されています。稿ではvc10で新たに追加されたSTLアルゴリズムを一気に紹介します。 以降、プロトタイプと説

    Visual C++ 2010に追加されたSTLアルゴリズム
  • C++ から学んだいくつかのどうでもいいこと - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    C++ Advent Calendar に参加してみました。 どうせ C++ の頭おかしい人達がいっぱい集まってるので、そっち方面はその辺の人に任せるとして、何かこう曖昧な話をだらだらと書いてみます。 コーディング規約について コーディング規約は、言語のコードをある特定の方向へと誘導することができます。まあこの特定の方向の先にあるのがひどいプロジェクトの成功だといいのですが、よくとんでもない方向へと突き進んでいることがあります。 何でそうなるのかって考えると、どの方向へ進もうとしているのかというのが明確にされていないということなんじゃないかと思うわけです。つまり、何を目的としてこのコーディング規約は作られたのか、誰に対してのコーディング規約なのかということです。 特定のプロジェクトを成功へ導くために作られたのか、多くのよくありそうなプロジェクトのためのひな形として作られたのか、バカ除けのた

    C++ から学んだいくつかのどうでもいいこと - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • Effective C++ in an Embedded Environment

    Presentation Materials: Effective C++ in an Embedded Environment by Scott Meyers Single-user license (personal use only) This PDF document contains the presentation materials from Scott Meyers' two-day training course Effective C++ in an Embedded Environment. It provides an in-depth examination of how C++ can be applied in embedded systems, including costs of language features, ROMing, ISRs, memor

  • Overview of the New C++ (C++11)

    Presentation Materials: Overview of the New C++ (C++11/14) by Scott Meyers Single-user license (personal use only) This PDF document consists of Scott Meyers' extensively annotated presentation materials for his training course on C++11 and C++14. This intensively technical seminar introduces the most important new features in C++11 and C++14 and explains how to get the most out of them. In Stock.

  • スマートポインタのつくりかた - 貳佰伍拾陸夜日記

    2年ちょっと前にC++で書いた非侵入的参照カウント方式のスマートポインタ実装を発掘した. スマートポインタの実装にはC++の様々なマニアックな実装手法が隠れていて面白い. せっかくなので, 解説つきで晒すことにした. このスマートポインタはboost::shared_ptr (以下単にshared_ptr)相当のもので, 当時C++のコードを書かないといけない状況下で「boost使っちゃらめぇぇぇ!」とか言われたために, せめてshared_ptrだけでも抜き出して使おうとしたものの, 依存しているファイルの数が思ったより多くて面倒になったので, 1ファイルで完結する簡易実装を自分で書くことにした, という経緯で生まれたもの. 似たような状況では有用かも知れないし, shared_ptrのソースコードを読む助けにはなるかも知れないけれど, 基的にはboostが使えるなら素直にshared

    スマートポインタのつくりかた - 貳佰伍拾陸夜日記
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • User-Defined Allocator

  • おびなたのはてな日記 - C++テンプレートは計算完備

    KEMURIをチューリング完全にするためにはどうしたらいいか、あるいはどうすればチューリング完全性を判定できるのか、ヒントを探していたら「C++テンプレートはチューリング完全だよー」という論文にたどり着いた。 C++ Templates are Turing Complete(PDF) Boost::MPL みたいなものが実現できるあたり、その可能性は感じていたけどやっぱりか!!但し、チューリング完全だと、いわゆる「チューリング機械の停止判定問題」があるわけで、C++はその問題を避けるために、言語仕様では最低17回の再帰までしか保証しないことにしている。なので、厳密にはチューリング完全ではないところ、これを無制限と仮定しているのがミソ。そして、テンプレートがチューリング完全ならば、(テンプレートを使った)C++プログラムはコンパイルできるかどうか判定する事が一般的にできなくなる*1。 昨年

    おびなたのはてな日記 - C++テンプレートは計算完備
  • Resource acquisition is initialization - Wikipedia

    This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Resource acquisition is initialization" – news · newspapers · books · scholar · JSTOR (December 2012) (Learn how and when to remove this message) Resource acquisition is initialization (RAII)[1] is a pro

  • 末尾再帰最適化判定 - やねうらおブログ(移転しました)

    C++でコンパイラが末尾最適化を行なっているのかを判定するコードを考えてみた。 私は最初、id:higepon:20070804:1186241590のコードを思いついたのだけど、このプログラムは誤りだった。関数のなかでアドレス演算子&でアドレスをとると、そのアドレスを外部から参照されて変更とかされたときに、N回目の再帰とM回目(N!=M)の再帰とで異なるアドレス指していないと元のプログラムと等価にならない。 だから途中でアドレスをとると末尾再帰の最適化は行なわれないのだろう。 修正案は、こうだ。 #include <stdio.h> #include <stdlib.h> int* tail_rec_opt_internal(int level) { if (level == 0) return &level; return tail_rec_opt_internal(--level);

    末尾再帰最適化判定 - やねうらおブログ(移転しました)
  • いやなブログ: STL のバインダとリファレンスへのリファレンス問題

    STL のバインダとリファレンスへのリファレンス問題 STL に含まれる bind1st と bind2nd は for_each や find などの関数と組み合わせて使うと便利です。しかしながら、リファレンス (参照) を引数に取る関数の引数をバインドすることはできないので注意が必要です。 注意が必要ですと言いつつ、自分がこの問題を知らずにはまりました。次のようなコードで問題は起きます。 #include <algorithm> #include <functional> #include <iostream> #include <string> #include <vector> using namespace std; void print(const string& s1, const string& s2) { cout << s1 << ": " << s2 << endl;

    papamitra
    papamitra 2007/07/07
    ええ、まさにハマりました
  • http://ml.tietew.jp/cppll/cppll/article/8191

  • 5. Lambda expressions in details

  • C++ lambda すーぱーぷろぐらみんてくにーーく!

    The Super Programming Technique §1.ラムダ式をC++で実現する【前編】 関数型言語の基的な概念であるラムダ式を、C++で実現する方法について紹介します。 ・高階関数(higher-order function) 他の関数を引数として扱う関数は、高階関数と呼ばれます。 「関数を引数にとる」のですが、関数を渡すためには、C++では、関数ポインタで渡すか、templateで渡すかです。(operator ( )をオーバーロードしたクラスをfunctorと呼び、これを引数templateを用いて渡すテクニックについては⇒集中講義4. 超高速描画の謎【後編】を参照のこと。) グラフィックの転送ルーチン等は、処理の99%が同じで、ピクセルをコピーする関数のみが違うという場合があります。このように、共通の処理がある場合、この高階関数にすると処理がすっきり書けます。

  • http://c2.com/cgi/wiki?RunAndReturnSuccessor

  • Generic State Machine Library for C++

    Generic State Machine Library for C++ は、汎用的な状態機械(オートマトン)ライブラリです。 継承/マクロ/キャストを使わずに、状態の入れ子構造や entry/exit アクション、初期遷移をサポートします。 文書 チュートリアル ユーザーズガイド リファレンスマニュアル サンプル:C/C++ コメントパーサー サンプル:電卓 FAQ 参考 Generic State Machine Library for C++ の実装は Quantum Framework(以下、QF) のアイデアを元にしています。QF はその名の通り、状態機械を走らせるフレームワークで、 性能・拡張性・移植性・安全性・マルチスレッドといった点を充分に考慮した設計になっています。 サポートしている言語も C/C++/Java/C# などと幅広く、 組み込み系のリアルタイムシステムでも

    Generic State Machine Library for C++
  • 2005-11-04

    もうちょっと頑張ろう。 最近そういうのが流行ってるらしいので。調べながら書くのを久し振りにやってみたい感じ。 CでC++の例外を捕まえたり投げたりする話。 いや、この話は理解しようとして、過去に二回挫折してんだけど。そろそろ僕も乗り越えないといけない時期が来たんではないかと。意味がわからんけど。 いや、それはいいか。とにかくC++の例外処理を解明していくのは面白い遊びなんではないかと思う。と、いうわけで、 unwind-SjLj type_info と 例外の実装 unwind-dwarf2 と 例外の謎と効率とその実装 と、いう順番で話を進めていく。まだ詳しく理解したわけではないので、気分によっては他の話が入ってきたりするかもしれない。そこらへんは、まあ、柔軟な対応ということで。 まず、C++の例外処理は、「大域脱出(unwind)」と、「RTTI」のふたつからなっている。 void f

    2005-11-04
  • Boost C++ Libraries Document

    ライブラリ . ドキュメント: 最新のリリース CVS(毎日更新) . ライセンス . Getting Started . 退行テスト: 一般的な情報 テスト結果 メーリングリストと ニュースグループ . Boost (Developers) . Boost Users . Project-Specific . Announcements . Discussion Policy サポート . FAQ . Request Support . Report Bugs . Suggest Features . Commercial Support . Also: Mailing Lists About . Formal Reviews . Review Schedule . Requirements . Guidelines . Submissions Other Resources . Fil

  • Let's Boost

    Boost C++ Libraries の紹介サイトです。 :: by Google はじめに ご挨拶 Boost のインストール方法 参考リンク集 ニュース ◆ Version 1.42.0 と 1.41.0 対応 (2010/03/14) 新規ライブラリに関する Let's Boost のページ…: property_tree (汎用木構造型コンフィグ管理) / uuid (ユニークID生成器) ◆ RSS つけました (2009/08/28) ◆ Version 1.40.0 と 1.39.0 対応 (2009/08/28) 新規ライブラリに関する Let's Boost のページ…: Signals2 (Signal/Slotライブラリ改良版) ◆ Version 1.38.0 と 1.37.0 対応 (2009/02/22) 新規ライブラリに関する Let's Boost のペー

  • 1