タグ

c++とC++に関するvoidy21のブックマーク (147)

  • C++ Reference Project

    C Library The elements of the C language library are also included as a subset of the C++ Standard library. These cover many aspects, from general utility functions and macros to input/output functions and dynamic memory management functions: <cassert> (assert.h)C Diagnostics Library (header)<cctype> (ctype.h)Character handling functions (header)<cerrno> (errno.h)C Errors (header)<cfenv> (fenv.h)F

    voidy21
    voidy21 2009/10/03
  • C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す

    C++0Xの新機能が搭載されたVisual Studio 2010 Microsoftの開発者向け技術情報サイト「MSDN」では、Visual Studio 2010 β1 がリリースされています。IDEがWPFで作られていたり、.NET Frameworkのバージョンが上がっていたりと、Visual Studio 2010では様々な変更/拡張が施されているようですが、C++屋の筆者としては、Visual C++が部分的にせよC++の新規格(通称C++0X)の新しい機能を積極的に取り入れていることが、とても嬉しく思います。 Visual C++ ver. 10に追加されたC++0Xの新機能のひとつ、「ラムダ式(lambda expression)」を少しばかり触ってみましょう。 関数オブジェクトとは C++templateをサポートし、それにあわせてSTLに代表されるテンプレート・ライブ

    C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
    voidy21
    voidy21 2009/09/27
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。 (2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素

  • boost::tokenizer で scanf を作ってみる - Cube Lilac

    Boost には printf() のような動きをするクラスとして boost::format がありますが,scanf() のような動きをするクラスは(多分)ありません.そこで,今回は scanf() のような動きをするクラスを自作してみます.今回は,boost::tokenizer をカスタマイズする方法でこれを実現してみます. boost::tokenizer は,以下のような宣言になっています. template < class TokenizerFunc = char_delimiters_separator<char>, class Iterator = std::string::const_iterator, class Type = std::string > class tokenizer boost::tokenzier の挙動は TokenizerFunc がそのほと

    boost::tokenizer で scanf を作ってみる - Cube Lilac
  • C++でのバイナリファイルの入出力について - voidy21の日記

    C++ではファイル入出力にfstream型(入力:istream,出力:ostream)を使います。 404 Not Found 上のページの「◆ブロック単位のファイル入出力」(つまりバイナリファイルの入出力)では istream& read(char* buf, streamsize size); ostream& write(char* buf, streamsize size); と書いてあり、この関数を使えばうまくバイナリファイルを読み書きできる気がします。 しかし、対象のバイナリファイルがchar型であればリンク先のサンプルも使えるのですが、 double型やfloat型だった場合、どうやって読み書きしたらいいかちょっとサンプルからはわかりません。 (昨日はこれで小一時間悩んだ) 実はC++編(標準ライブラリ) 第33章 ファイルストリームにもあるように、ifstreamとofs

    C++でのバイナリファイルの入出力について - voidy21の日記
  • パーシャルクラスに対する一抹の不安

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 34309 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

    voidy21
    voidy21 2009/09/09
  • emacs C++ 開発環境 link集 - niitsumaの日記

    emacsでc++開発を行うための情報を集めました。まとめをここでしています 以下それぞれのリンク Emacs で C 言語プログラミングを始める人へのイントロダクション 初心者向けdocment 以下の2項目が役立つ タグジャンプ ここで説明しているtagファイルの作成方法 $ find . -name "*.[chCH]" -print | etags - はubuntu7.10では動かなかった 関数名の補完入力がM-tabでできる タグジャンプはここで説明してるetagより後述のgtagの方が便利 Benjamin Rutt's Emacs C development tips (English) complieをする窓の大きさを小さめにする方法 インデントを自分好みにする方法 etagの使い方。Emacs で C 言語プログラミングを始める人へのイントロダクション よりも詳しく解説

    emacs C++ 開発環境 link集 - niitsumaの日記
  • 羞羞午夜福利院免费观看日本,韩国激情高潮无遮挡,18禁止进入拍拍拍高潮网站,特级欧美AAAAAA视频

    羞羞午夜福利院免费观看日,韩国激情高潮无遮挡,18禁止进入拍拍拍高潮网站,特级欧美AAAAAA视频,国内精品最大少妇,揉捏爆乳巨胸挤奶视频,老师你的奶头好紧好大

    voidy21
    voidy21 2009/09/07
  • 上限と下限 - Faith and Brave - C++で遊ぼう

    値が下限値を下回ったら、上限値を超えたら、という処理を以下のように書くことがよくありますが // 下限 int a = 10; for (;;) // ループ条件はとりあえずなんでもいい { --a; if (a < 0) a = 0; } // 上限 int a = 0; for (;;) { ++a; if (a > 10) a = 10; } std::minとstd::maxを使うとスッキリ書けたりします。 // 下限 int a = 10; for (;;) { a = std::max(a - 1, 0); } // 上限 int a = 0; for (;;) { a = std::min(a + 1, 10); } でもこれだけだと、下限に達したとき、上限に達したときに何か処理をさせたい場合に不便なので 以下のように、minとmaxを拡張した関数を用意しておくと便利です。

    上限と下限 - Faith and Brave - C++で遊ぼう
    voidy21
    voidy21 2009/08/17
  • constメンバ関数は重要 - Faith and Brave - C++で遊ぼう

    私は基的に、C++でソース書くときはやたらめったらconst付けます。 なぜならHaskellが好きだからです(ぇ じゃなくて、状態の変更によるバグを減らすためです。 しかし、他人が書いたソースを見てると、オブジェクトのconst操作を考えて設計されてないことが けっこうあり、Is〜とかGet〜といった名前の関数の中でメンバの状態を変更してたりします。 これはとくに、JavaやC#のようなconstメンバ関数がない言語からC++に移植するようなときに 起こりやすいのですが、C++でもconstメンバ関数の存在を知ってか知らずかconstが付いてないことが多々あります。 書籍でいうと、『Game Programming Gems』では明らかにconst操作なメンバ関数にconst付いてないですね。 C++で大きなプログラムを組む際は、元となるコード(移植元やライブラリ)がオブジェクトのco

    constメンバ関数は重要 - Faith and Brave - C++で遊ぼう
    voidy21
    voidy21 2009/07/16
  • C++: 編集距離を求めるアルゴリズム

    編集距離(edit distance)とは二つの文字列がどの程度異なっているかを示す数値であり、レーベンシュタイン距離(Levenshtein distance)を指すことが多い。文字の挿入、削除、置換それぞれを一つの操作として必要な操作の最小数を求めるものだ。例えば、kittenとsittingの編集距離を求める場合、下記のように3回の操作でkittenをsittingに変更できるので編集距離は3となる。 1. sitten (k を s に置換) 2. sittin (e を i に置換) 3. sitting (g を挿入) そこで今回は編集距離を求める複数のアルゴリズムについてC++で実装してみた。 動的計画法 編集距離を求めるもっとも一般的なアルゴリズムは、動的計画法(dynamic programming)だろう。計算時間はO(mn)であり、手軽だ。C++で書いたコードを下に示

  • 俺コーディング規則 - Cube Lilac

    最近,他人が自分のコードを読んだり修正したりする機会が増えてきたので,意思疎通のために自分のコーディング規則をメモしておきます.CLX C++ Libraries も(たまにブレてますが)ここに挙げる規則に従って書いているので,コードを読む際の参考にでも. 尚,以下は基的に自分が守っているだけで,他人は(単一プロジェクト内のコード間で整合性が取れる範囲で)自分の信念に基づいてコーディングしていけば良いんじゃないかな,と思っています. 名前空間 グローバル名前空間には,クラス/関数を(極力)定義しないようにします.通常は,プロジェクト毎に適当な名前空間を考えて,その名前空間内に各種クラス/関数を定義します.ただし,ユーザに使用されることを意図していないクラス/関数に関しては,使用する名前空間の中でさらに detail 名前空間を定義して,その中で定義します. クラス設計 クラスは, x.i

    俺コーディング規則 - Cube Lilac
  • CLX C++ Libraries

    Overvies CLX C++ Libraries は,文字列処理やネットワークプログラミングの補助などを行うための, ヘッダファイルのみで構成された C++ ライブラリです. CLX C++ Libraries は, BSDライセンスで配布しています.ソースコードの複製・改変は自由ですが, 自己責任でお願い致します. Usage CLX C++ Libraries を使用する際には,以下のファイルをダウンロードし, 解凍して出来た clx フォルダ以下のヘッダファイルを作業フォルダにコピーするか, または,インクルードオプションを適切に指定して下さい. CLX C++ Libraries で作成したクラスは clx 名前空間の中に定義してあります. 利用する場合は,直接指定するか適切な using ディレクティブを指定して下さい. 動作確認は gcc 4.0.2 (Linux), gc

    voidy21
    voidy21 2009/06/30
  • 並列アプリケーションを作ってみよう | OSDN Magazine

    インテルのCoreシリーズCPUが登場して以来、マルチコアCPUは爆発的に普及している。現在では比較的低価格なCPUでも複数のコアを搭載するようになり、現在販売されているPCのほとんどはマルチコアに対応しているといっても過言ではない。しかし、まだマルチコアCPUの性能を生かす、並列処理を行っているアプリケーションは多くない。 並列処理は、一般には実装が難しい、という印象があるようだ。確かにスレッドを駆使して処理を並列化する場合、スレッドの管理やスレッド毎の連携など、考慮しなければならないことが増え面倒ではある。しかし、プログラムを並列化するための言語規格「OpenMP」や、C++用の並列化ライブラリ「Threading Building Blocks」といった並列化支援技術を利用することで、プログラムの並列化へのハードルは大幅に低くなる。また、インテルの開発製品「Parallel Stud

    並列アプリケーションを作ってみよう | OSDN Magazine
    voidy21
    voidy21 2009/06/17
  • pimplイディオムを語る — ありえるえりあ

    Recent entries 宣伝:C/C++のための開発補助ツール、GCCSenseをリリースしました matsuyama 2010-04-15 宣伝:Rubyのための開発補助ツール、RSenseをリリースしました matsuyama 2010-03-21 Emacsは死んだ matsuyama 2010-02-22 WebアプリケーションをiPhoneに対応させるための技術メモ matsuyama 2009-10-13 tokyo-emacs#x02の個人的レポート matsuyama 2009-09-07 Recent comments replica louis vuitton Anonymous User 2010-12-22 Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました Anonymous User 2010-12

    voidy21
    voidy21 2009/06/17
  • http://ja.wikibooks.org/wiki/Category:More_C%20%20_Idioms

    voidy21
    voidy21 2009/06/17
  • Amazon.co.jp: C++ プライマー 第4版 IT Architect’ Archive クラシックモダン・コンピューティング: スタンリー B.リップマン (著), 玉井浩 (翻訳): 本

    Amazon.co.jp: C++ プライマー 第4版 IT Architect’ Archive クラシックモダン・コンピューティング: スタンリー B.リップマン (著), 玉井浩 (翻訳): 本
  • C++ Labyrinth

    C++ ラビリンス C++ は、数多くの謎、咒文、罠、そして宝箱が仕掛けられた、壮大な迷宮である。 その C++ 迷宮をさまよう同志たちへ、ささやかながら、いくつかの道標を お贈りしたい。 もちろん、私自身、C++ 迷宮の一彷徨者に過ぎない。誤りや不備な点があれば、 遠慮なく指摘していただきたい。 キャスト (2001-03-01) dereference (2001-03-01) マルチスレッドにおける singleton (2001-03-17) 契約による設計 (2001-03-25) 戻値とコンストラクタの妖しい関係 (2001-04-09) マルチスレッドにおける singleton (その2) (2001-04-10) 自己言及的なテンプレート (2001-06-13) オーバーロードは継承できない (2001-06-16) GCC 3.0 のインストール (2001-07-0

    voidy21
    voidy21 2009/06/04
  • C++の新しいキャスト

    C++の新しいキャスト 従来のキャストの問題点 異なる型への変換において、C/C++ではキャストが用いられます。 // intからlongへのキャスト int ival; int lval = (long)ival; ご存知のとおり、キャストは非常に危険です。 来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。 キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。 型変換 // int から double へ int ival; double dval = (double)ival; 型変更 // long から int* へ long lval; int* iptr = (int*)lval; const外し // const int* から int* へ const int* ciptr; int* iptr = (int*)cip

    voidy21
    voidy21 2009/06/02
  • テンプレートあれこれ (4) -- typename の役割 - C++ Labyrinth

    テンプレートあれこれ (4) -- typename の役割 typename というキーワードには、2通りの用法がある。 "static" もそうだが、同一のキーワードに複数の意味を持たせるのは、 C++ の悪い癖だな。なんとかしてほしいところ。 で、typename の一つの意味は、テンプレート引数として 「型」を取ることを宣言する場合。 これは、"class" キーワードで置換できる。 たとえば、次の (A) と (B) は同値である。 template<typename T> class Foo; // (A) template<class T> class Foo; // (B) まあ、これは誰でも知っていると思う。 typename には、もう一つ、後続する識別子が 「型名」であることを明示するという重要な働きがある。たとえば、 template<class T> class

    voidy21
    voidy21 2009/06/02