タグ

C++とプログラミングに関するiwwのブックマーク (92)

  • Google C++スタイルガイド 日本語訳

    Text Drop 翻訳、プログラミング、写真、カメラなどについて書いてます。スタイルガイド/コーディング規約やチートシートなど、ちょっと便利なものを翻訳しています。 TEXTdropでは、C++プログラマーも利用できるパワフルな機能を搭載。C++のコードを書く際に行う手順や避けておきたい工程などを詳しく説明しています。コードスタイルラインの日語版では、日語訳やJ P Yへの換金もサポート。話題性があるオンラインカジノ 日円変換や入金の際のバグにも対応しています。統一性のあるコードを書くためのポイントや規約の種類を参考にする事ができます。

    iww
    iww 2012/07/05
    whyが書いてないのでイマイチ
  • サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Factory/Factory Method(ファクトリ/ファクトリメソッド)

    イントロダクション オブジェクトを利用する側からすれば、使用する際にオブジェクトの詳細を意識したくはありませんよね。 たとえば、条件によってデータファイルの読み込みに使うオブジェクトが異なる場合、CSV形式であればCSVDataReaderオブジェクトを、XML形式であればXMLDataReaderオブジェクトを生成します。 通常はif、else、switchなどの条件分岐を使用して、条件ごとに生成するオブジェクトを変更します。 ここで新たなデータファイル形式への対応が必要になった場合は、新しいオブジェクト生成処理と、条件式を追加しなければいけません。 オブジェクトの使用者は、オブジェクトが使用できる状態で受け渡してもらい、オブジェクトは使うことだけに専念したいものです。 また、このようにオブジェクトの生成処理と使用処理が同じコードに書かれていた場合、オブジェクトの生成処理によってオブジェ

  • std::basic_stringstream - cppreference.com

    template< class CharT, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT> > class basic_stringstream; クラステンプレート std::basic_stringstream は文字列ベースのストリームに対する入出力操作を実装します。 実質的に std::basic_string のインスタンスを格納し、それに対する入出力操作を行います。 低水準では、このクラスは基的に std::basic_stringbuf の生文字列デバイス実装を std::basic_iostream の高水準インタフェースでラップします。 std::basic_stringbuf に固有のメンバへの完全なインタフェースが提供されます。

  • C++マニアック,STL の string の使い方,how to use STL string,標準テンプレートライブラリ,standard template library,文字列,C++言語

    C++マニアック STL の string の使い方,how to use STL string,標準テンプレートライブラリ,standard template library,文字列 このページでは STL の string の使い方について解説します。 string とは string の初期化 string と「MFC の CString」とのやりとり string をバイナリデータとして扱う string を連結する string は不便? Format() MakeUpper() MakeLower() TrimLeft() TrimRight() string をバリアント型にしてみる string とは ページの先頭へ string は、「要素が char 型の文字列」を表現するための型である、と考えている人が多いでしょう。 しかし、これは、ほんの少しだけ違います。 文字

  • 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

    iww
    iww 2012/06/29
    なんかいろいろあるライブラリ。BSDライセンス
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • std::map や std::vector で erase - Debuggin' Everyday

    By Yasunori Osana on April 9, 2008 12:30 AM | Permalink | Comments (0) | TrackBacks (0) 条件にマッチする要素を順に検索して削除すると、削除したときに iterator が無効になる。 vector なら、erase() が削除後に有効な次の要素への iterator を返してくれるので、 for (std::vector::iterator i = v.begin(); i != v.end(); ){ if ( condition ) i = v.erase(i); else i++; } map だと、iterator を返してくれないので、 for (std::map::iterator i = m.begin(); i != m.end(); ){ if (condition)

  • F-35の開発で生まれたソフト技術

    先日、政府は自衛隊の次期主力戦闘機(FX)に、米国など9カ国が共同開発中の米Lockheed Martin社製「F-35 Lightning II」を選定しました。 航空機産業は技術面で多大な波及効果があることから、FXの選定においても国内の防衛産業の基盤維持が一つの論点となっていました。ただし、今回選定が決まったF-35の場合、Eurofighter社の「Typhoon」といった他のFX候補機と比べると、国内で認められるライセンス生産の割合は低いようで、F-35調達における一つの懸念点となっているようです。 これはこれで日の製造業にとって非常に重要な問題なのですが、それとは別に筆者がF-35で思い浮かべたのが、「JSF++」です。 JSFというのは、F-35のプロジェクト発足当初の名称で「Joint Strike Fighter」の略称です。さまざまな国の多様な目的を持った戦闘機を共通

    F-35の開発で生まれたソフト技術
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

    iww
    iww 2012/01/19
    関数内のstatic変数の初期化はデフォルトでスレッドセーフ
  • Xcode 4 でデフォルトになった LLVM って何?

    こんにちは。開発担当の金内です。 Xcode 4 は UI もすっかり変わりましたが、ビルドの要であるコンパイラもデフォルトが変更されています。その新しいコンパイラのキーワードが「LLVM」です。いまいち聞き慣れない方もいると思うので、今回はその LLVM について簡単にご紹介します。 ざっくりとした結論から言ってしまえば、Xcode における LLVM は従来のデフォルトコンパイラである GCC を置き換えるものです。LLVM には次のような特徴があります。 ・コンパイルが速い ・コンパイルされたコードが速い ・エラーメッセージがわかりやすい ・他のツールと連携しやすい いいことばかりですね。 しかし、コンパイラは要となる重要なコンポーネントなので、互換性などへの配慮から、Apple は GCC からの移行を少しずつ段階的に進めています。 実際、Xcode 4.0 でのデフォルトは完全に

    Xcode 4 でデフォルトになった LLVM って何?
  • C++のヘッダファイルを自動生成する - nokunoの日記

    C++では関数や変数の型を指定するのにヘッダファイルとソースファイルの2ヶ所に書かなければならないことに,疑問を感じたことはないでしょうか? あなたはソースファイル中の関数の引数を変更したあと,ヘッダファイルの変更を忘れてコンパイルエラーになる現象を何回経験したか覚えていますか? もしくはその逆は(ヘッダファイルを変更してソースファイルの変更を忘れる)?ソースファイルとヘッダファイルの同期を手動でやらなければならないのは,馬鹿げています.先にヘッダを書いてからソースを書いてもう2度と変更しないようなプログラムを書くのでなければ,ソースとヘッダ重複するコードの修正にかかる手間は2倍になってしまいます.経験の浅いC++プログラマは全てのソースコードをヘッダファイルにインラインで書きたいと思うかもしれませんが,モジュールが相互に依存している場合に必要な定義を先に読み込めるように順番を管理したり,

  • g++ の -fthreadsafe-statics ってオプション知ってます? - memologue

    古来より、関数スコープの静的なオブジェクトを作るのは危険 void foo() { static CBar bar; // こんなの とされています。foo()が初めて呼ばれたタイミングでbarのコンストラクタが走るわけですが(C++規格でそう決まっている)、foo()の初回呼び出しが2つのスレッドでほぼ同時に行われると、barのコンストラクタが複数回走ってしまったりと、不可解な動作をすることが知られています。 参考サイト: http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx (引用するの何度目だろ) ところが、最近のg++には -fthreadsafe-statics っていうオプションがあって、この初回のコンストラクタ呼びをスレッドセーフに行ってくれるようになりました。手元のgcc3.4.3ではデフォルトでon

    g++ の -fthreadsafe-statics ってオプション知ってます? - memologue
  • はいはい縦書き縦書き・・・・・ッ!? - Webと文字

    縦書き”ってどうやるの? 調べてみました。 エセ縦書き縦書き文庫】はじめに(管理人) 下に載っているのは全部エセ縦書きです。 縦書きサイト普及委員会 やっていることは いな           新 いん    ,─--.、 言と   ノ从ハ从   ス 葉聞   .リ ´∀`§ かこ    X_@X    レ |え   U|_____|U |の    ∪ ∪ ! ! と同じです。横向きを無理やり縦に見せてるわけですね。これを改善するには以下が焦点となります。 センターラインからのズレ 横向きと縦向きで形が違う文字 ex)「」ー これをfreetypeとtypeface.jsで改善して見ます。 ズレを直す そもそもの問題として、フォントによって縦書き出来るかどうかが分かれます。縦書きが可能なフォントには、縦書きした時のグリフ位置情報(縦書き用メトリクス)が含まれています。 このようなフォ

    はいはい縦書き縦書き・・・・・ッ!? - Webと文字
  • 定義済みマクロ - redstrange Wiki*

    標準規格 C言語 __DATE__ ソースのコンパイル日付 __FILE__ ソースのファイル名 __func__ 関数名(Visual Studio.NET以降では、__FUNCTION__) __LINE__ 行番号 __STDC__ 標準Cに従っている際に定義されている(ifdefで使う) __STDC_HOSTED__ 整数1 __STDC_IEC_559__ IEC60559浮動小数点仕様に従っている際に定義されている __STDC_IEC_559_COMPLEX__ IEC60559互換の複素数仕様に従っている際に定義されている __STDC_ISO_10646__ ?→http://seclan.dll.jp/c99d/c99d02.htm#dt19990412 __STDC_VERSION__ C言語のバージョン __TIME__ ソースのコンパイル時刻 __TIMESTA

    定義済みマクロ - redstrange Wiki*
  • Codian - ポインタと文字列とCStringと

    更新日: 2007/11/19 動作確認環境:Windows XP Professional SP2, Visual C++ 6.0 Professional SP6 サンプルプロジェクト(Visual C++ 6.0): MxA09_VC6.zip サンプルプロジェクト(Visual C++ 6.0用、サンプルプログラム13のみ): MxA09_Unicode_VC6.zip 最後は文字列についてです。 MFCにはとても便利なCStringクラスがありますが、それをどう使えばいいのか、やや遠回り気味に説明したいと思います。 ちなみに文字列やポインタについては、Codianの「ポインタ」でも解説していますのでそちらもどうぞ。 C/C++言語の文字列型 なんてものは存在しません!! Visual Basic他、多くの言語は簡単に文字列を操作できる「文字列型」を持っていますが、C/C++言語に

    iww
    iww 2010/06/15
    恋しさとせつなさと心強さと
  • 「構造化プログラミングに関する覚え書き」へと導いたもの | taro-nishinoの日記 | スラド

    明けましておめでとうございます。 さて、私の周辺では、先日に書いた"Gotoは有用である"について、折角のMatt S. Trout氏の文よりも、何故か不幸にも私の書いた訳注の方が話題になっています。 Linus氏はgoto有用論の他にも、C++をボロクソに貶したり、当に愉快な人だと私は思います。ただ、C++を貶された時の反応として、海外は置いとくとして、日の一部の人が余りにも井の中の蛙的な反応をしたように記憶しています。代表的な例は「Linusはオブジェクト指向が分からないからだ」というのがあります。私は思わず笑いました。Linus氏ほどの頭脳で分からないことが、極東の日の貴方がたは分かっていると言わんばかりじゃないですか。一部にせよ、だから日は駄目だと思いました。つまり、自己を客観視せず、実質的実力は無いのに一流家気取りなんですね。もっとはっきり言えば何様のつもりなんだと。ど

  • Tera Termソースコード解説

    Tera Termソースコード解説 はじめに 必要スキル モジュール構成 ライブラリ構成 プラグインサポート 設定ファイルの読み書き セキュアプログラミング 古いバージョンのWindowsとの互換性維持 デバッグ手法 マルチスレッド DDEによるプロセス間通信 TTSSHによるSSHの設計と実装 マクロ言語の設計と実装 キャレット制御 シリアルポート バイナリ転送プロトコル はじめに 文書では、Tera Termのソースコードについて解説をします。解説対象とするソースコードはバージョン"4.58"(2008年2月現在)のものをベースとしています。 必要スキル Tera Termのパッケージに含まれるほとんどのプログラムは、C言語で記述されています。一部のコードはC++言語で、MFC(Microsoft Foundation Class)が利用されています。Windows特有の処理を行うた

  • C/C++ 迷信集 | 株式会社きじねこ

    C/C++ を使うプログラマは大勢います。しかし、その多くは OJT を通して言語を学んだのではないでしょうか? 実はそこに大きな落とし穴があります。 コンピュータや工学のことをよく知らない人たちは、時代の先端を歩むプログラマには「迷信」など無関係だと信じて疑わないかも知れません。しかし、迷信や誤解はどんな世界にも常に存在しています。 というわけで、ここでは C/C++ にまつわる迷信、誤解、よくある間違いを採り上げていきます。非常に後ろ向きな企画ですが、暇つぶし気分転換に読んでみてください。もしかすると、ご自身が迷信にとらわれていたことに気付くかもしれません。 追記(2009/03/15) このコーナーでは、C/C++ にまつわる迷信、誤解、よくある間違いを扱っています。決して「迷信」だけではないのですが、タイトルにはすべて[迷信]を付けています。 これは、主に検索エンジンでタイトルを見

  • 革命の日々! シーケンスロック その5 volatileがダメな理由

    どもども。またまた間隔があいてしまいましたがシーケンスロックな話しの続きです。 前回の記事で坩堝さんから面白い指摘をうけたので今回は予定を変更してvolatileの話をしたいと思います。 retをvolatileにするだけではうまくいかないんですよね? どういう風になるんだろ. なるほど、たしかに世のC言語の参考書を見るとvolatileはある種の最適化を妨げる効果を持つと されています。 これだけ見ると、volatileとつけるだけすべての最適化が無効になってうまく動きそうですね。 しかし、その理屈は微妙におかしいのである 多くの人が「ある種の」という言葉を拡大解釈しているがvolatileは来スレッド同期に使えるようなシロモノではないのである。 つづきは、続きを読むからご覧ください。 あと、お願い。 今回の話は前提知識がいろいろとあるので、末尾のご参考にあげたURLを読んでから 読ん

  • KMC Staff Blog:C++ ではキャストでアドレスが変わる場合があります

    2009年07月24日 C++ ではキャストでアドレスが変わる場合があります このごろは組み込みソフトウェア開発でも C++ が使われるようになってきました。C から C++ に移行する際、おそらく誰もが一度は引っかかるのではないかという C++ の挙動について書きます。 C++ では、多重継承した class(struct) のアドレスを扱う際には注意する必要があります。 #include <stdio.h> struct A { int a; }; struct B { int b; }; struct C : public A, public B { }; int main() { C *c = new C(); B *b = c; A *a = c; printf("C = %p\n", static_cast<void*>(c)); printf("B = %p\n", stat