タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとProgrammingとC++に関するAmaiSaetaのブックマーク (266)

  • C++ で関数から object をどう返すか - KBDAHOLIC - やぬすさんとこ

    VC++ における NRVO について別 entry に書いた -> http://d.hatena.ne.jp/janus_wel/20100301/1267397791 昨日同じような title で entry 書いたら ( http://d.hatena.ne.jp/janus_wel/20100221/1266766850 ) comment でいいことを教えてもらった ( http://d.hatena.ne.jp/janus_wel/20100221/1266766850#c ) ので調べてみたら最終的に今回の entry の title になった。 id:k1m 、 id:tyru ありがとう。 RVO and NRVO まず klm くんの教えてくれた RVO ( Return Value Optimization の略。余談だけど Return"ed" じゃないのは "

    C++ で関数から object をどう返すか - KBDAHOLIC - やぬすさんとこ
    AmaiSaeta
    AmaiSaeta 2010/02/24
    RVOとNRVO。関数ローカルなオブジェクトを値返ししてもコピー処理が省略される*場合がある*との事。知らなかった。
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • asio 03 - DELPHIER@はてな

    はじめに 今回はコードを非同期化する上で肝となる io_service について取り上げる。 うんちく 前回までサンプルコードについて一切解説を入れていなかったが、前回密かに以下のような呼び出しを行っている。 io_service.run(); これを呼び出すと、何が起こるのだろうか。以下のことが起こる。 呼び出し前までにたまっていた非同期呼び出し処理が動き出す 非同期処理が終わるまで待つ イベントループが実行される なので、非同期処理をいくら呼び出しても、io_service::run が実行されないと何も起こらない。逆に、非同期処理を呼び出す前に io_service::run が実行されてしまうとすぐに処理が完了してしまう。前回のコードから、io_service::run の行をコメントアウト実行してみるとよく分かるはずだ。さらにいうなら、コメントアウトしたすぐ下に数秒間待機するコー

    asio 03 - DELPHIER@はてな
    AmaiSaeta
    AmaiSaeta 2010/01/14
    補足章(io_serviceとは何か?)を参照。
  • asio 01 - DELPHIER@はてな

    はじめに boost の asio がいつの間にか バージョン 1.0 になっているじゃないか。 実際にソケットを使うプログラムでどのくらい使えるのかがわからなかったので、少し試してみることにした。 まずは、名前解決からだ。 うんちく 名前解決を侮ってはいけない。もしもあなたが HTTP クライアントプログラムを書くとしよう。もちろん、アクセス先のサーバは落ちる(頻発しないかもしれないが、必ず落ちるだろう)。そういったことを考慮して、サーバ側では可用性を高めるための手段が講じられる。そのひとつとして、DNS ラウンドロビンがある。DNS ラウンドロビンは、ひとつのドメイン名に複数の IP アドレスを割り当てることによって実現される。 あなたが書いた HTTP クライアントがそういったことを考慮していないと、具体的には名前解決の結果として複数の IP アドレスが返ってくることを考慮していない

    asio 01 - DELPHIER@はてな
  • boost.1.41.0 - redboltzの日記

    AmaiSaeta
    AmaiSaeta 2010/01/13
    全く同じ症状で嵌った。
  • 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

    AmaiSaeta
    AmaiSaeta 2009/11/24
    C++クロスプラットフォーム汎用(文字列操作、ネットワーク、スレッド、日時、数値処理など)ライブラリ | BSDライセンス
  • [迷信] 非局所オブジェクトは外部結合 | 株式会社きじねこ

    株式会社きじねこは大阪のソフトウェア開発会社です。組込み系・業務系のプログラム開発から電子回路の設計までおまかせください。 今回のタイトルはやや分かりにくいかもしれません。「非局所オブジェクト」というのは、関数の外で宣言したオブジェクトのことです。いわゆる「グローバル変数」とほぼ同じと考えてください。 さて、関数の外で宣言された「非局所オブジェクト」ですが、static 記憶クラス指定子が付いていれば内部結合になることはいうまでもありません。今回話題にするのは、記憶クラス指定子が付いていないデフォルトの状態での結合がどうなるかです。 結論からいうと、非局所オブジェクトが外部結合になるか内部結合になるかは、C と C++ では異なります。これは、C と C++ の間の重要な非互換性のひとつです。 まず、C の場合には、明示的に static 記憶クラス指定子を付けない限り、非局所オブジェクト

  • [迷信] 文字列から整数への変換には atoi | 株式会社きじねこ

    ごく普通のナル終端文字列 "123" を整数値の 123 に変換するとき、あなたはどんな方法を用いるでしょうか? 学校の課題でもないかぎり、1文字ずつ取り出して数字かどうかを判別し、数字なら取り出した文字から '0' を引いた値を元の値に 10 倍したものに加えていく...といった処理をわざわざ書くことはないでしょう(組込み用途のフリースタンディング処理系やライブラリ自体の開発の場合は別ですが)。 上記のような変換を行う場合、atoi 関数を使っていることが少なくないと思います。しかし、当にそれでよいのでしょうか? atoi というのは、元の文字列が正しい書式で、しかもオーバーフローが起きない場合にのみ正しく動作します。そうでない場合、エラー検出を行うことがまったくできません。特に、オーバーフロー発生時には未定義の動作を引き起こします。こんな危険な関数を使ってよいはずがありません。 この

  • Account Suspended

    Account Suspended This Account Has Been Suspended

    AmaiSaeta
    AmaiSaeta 2009/10/17
    C/C++のプログラムの最後には空行が必要。
  • [迷信] とりあえず memset で初期化 | 株式会社きじねこ

    よく見かけるコードですが、上のコードは、必ずしも期待した結果になるとは限りません。なぜなら、double 型やポインタ型は、これらを構成する全ビットが 0 になったとしても、オブジェクトの値が 0 になるかどうかは分からないからです。 確かに、ほとんどの処理系では上記のコードでも問題なく、そして期待通りに動作します。しかし、それはあくまでも"たまたま"動いているに過ぎません。そうした不安定な要素をなくすために行った初期化が、かえってコードを怪しくしてしまっているのです。 単に、集成体の全要素をゼロクリアしたいだけであれば、 とすれば十分です。こう書くと、おそらく次のような反論が返ってくることでしょう。「その方法では、構造体の詰め物がゼロクリアされない」と。しかし、構造体の詰め物にアクセスして、言語仕様上保証される結果を期待することには無理があります。 構造体の詰め物をゼロクリアしたい理由は

    AmaiSaeta
    AmaiSaeta 2009/10/17
    知ってるけど、これやっちゃってる人多いんだよねぇ。
  • Account Suspended

    Account Suspended This Account Has Been Suspended

    AmaiSaeta
    AmaiSaeta 2009/10/17
    知らなかった。へぇー。
  • C++リファレンス - cppreference.com

    スマートポインタとアロケータ 日付と時間 関数オブジェクト  −  hash (C++11) 文字列変換 (C++17) ユーティリティ関数 pair  − tuple (C++11) optional (C++17)  −  any (C++17) variant (C++17)  −  format (C++20)

  • 上限と下限 - 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++で遊ぼう
    AmaiSaeta
    AmaiSaeta 2009/09/06
    int a = 0; for(;;) { if(a>上限値) a=上限値; } ←のスマートな書き方(下限値verも)
  • Weffc++、Qeffc++

    説明 このオプションは、Scott Meyers 著『Effective C++』のプログラミング・ガイドラインに基づく警告を有効にします。このオプションを指定すると、コンパイラーは次のガイドラインに基づいて警告を出力します。 #define ではなく、const と inline を使用する。(ユーザーコードのみ。システム・ヘッダー・コードには適用されません。) <stdio.h> ではなく、<iostream> を使用する。 malloc と free ではなく、new と delete を使用する。 C 形式ではなく、C++ 形式のコメントを使用する。システムヘッダーにある C コメントは診断されません。 デストラクターでポインターメンバーに対して delete を使用する。コンパイラーは、delete を使用していないすべてのポインターを診断します。 ポイ

    AmaiSaeta
    AmaiSaeta 2009/06/12
    『Effective C++』『More Effective C++』に添うコードを書いているかをチェックするオプション、らしい。
  • CとC++は似たようなモノか? | スラド

    ストーリー by makeplex 2009年05月16日 22時52分 違和感がないならまだ初心者ということか? 部門より プログラミング言語のカテゴリ分けで、CとC++は一緒にされることが多い。Q&AサイトやSNS等でも「CとC++」というように同類視されている。 先日の当/.jpのアンケートでも、プログラミング言語に関する設問はこうなっている。 □C/C++ □C# □Objective-C CプログラマとしてはCとC++を一緒にされて迷惑している。実際, ネット上での質疑応答でも「まず CかC++どっちの質問?それを書いてくれないと答えられないよ」ってのが最初の応答だったりもするし。 個人的には、言語の「同類度」という観点では Cだけ別にしてオブジェクト指向という共通点がある C++/ObjectiveC/C#を一緒にするほうが妥当に感じるのである。 言語のグループ分けの際にどれと

    AmaiSaeta
    AmaiSaeta 2009/05/17
    単純に同一処理系で使える(事が多い)からでは。あと歴史的な理由。 | C,C++,Javaを並べるならCはどちらとも遠く、残り2つはそこそこ近いイメージ。C#,Objective-Cはしらね。C++に一番近い言語は(俺の知ってる範囲内では)Dかなぁ?
  • やすですが、何か?Vista & VisualStudio2008 de cppunit

  • iostream の状態について - IT戦記

    書いとかないと忘れそうなのでメモ gcc の basic_ios は以下のような operator void* と operator! を持っているので //@{ /** * @brief The quick-and-easy status check. * * This allows you to write constructs such as * "if (!a_stream) ..." and "while (a_stream) ..." */ operator void*() const { return this->fail() ? 0 : const_cast<basic_ios*>(this); } bool operator!() const { return this->fail(); } //@} 以下のように if (in.read(buf, size)) // o

    iostream の状態について - IT戦記
  • 「SDL + OpenGL + Lua でゲームプログラム」講座

    この講座ではメインのプログラム言語を C++ とし、SDL や OpenGL、OpenAL などのライブラリや Lua スクリプトなどの便利なツールを紹介していきます。「C++ は読めるようになったけれども、ゲームをどう作れば良いか分からない」という方々のお役に立てれば幸いです。 講座に掲載されているプログラムやサンプルは自由に使っていただいて構いません。ただ、各ライブラリ(SDL, OpenGL, Lua など) を利用される場合は、そのライセンスにご注意下さい。 この講座について はじめに ゲームの基礎 プログラミング以外の、ゲームについての基礎を解説します。 基となるループ処理 ゲーム用の基モジュール 各モジュールについてサンプルプログラムを提示し、解説を行います。 SDL + OpenGL による画面制御 (記述中)OpenAL による音楽の再生 (記述中)smpeg による

  • volatileとコピー・代入 - meryngii.neta

    C++でvolatile修飾された構造体はものすごく扱いにくい。 typedef struct { int x; } X; int main() { X n_1; volatile X v_1; /* コピー(代入ではない)*/ X n_2 = n_1; /* OK */ X n_3 = v_1; /* エラー */ volatile X v_2 = n_1; /* OK */ volatile X v_3 = v_1; /* エラー */ /* 代入 */ n_2 = n_1; /* OK */ n_3 = v_1; /* エラー */ v_2 = n_1; /* エラー */ v_3 = v_1; /* エラー */ return 0; } このコードはC++では大量のエラーが出るが、C言語ではコンパイルが通る。おそらくCとC++の非互換性の一つではないかと思われる。 原因はC++のデ

    volatileとコピー・代入 - meryngii.neta
  • libBulletML

    english 説明 弾幕記述言語 BulletML を扱う c++ ライブラリです。 これを用いることによって、豊富な記述力を持つ BulletML を、 XML解析の知識がなくても利用することができます。 グラフィックなどのゲームの他の部分とは完全に切り分けられているので、 安心してどんなソフトにでも使用することができます。 プログラムに埋め込まれた弾幕記述に比べると遅いと思われますが、 解析時に全ての要素を enum 化しているため、 実行時の文字列比較などによる速度低下は起こりません。 BulletML は ABAさんがデザインした弾幕記述言語です。 詳しくは こちらをどうぞ。 私見。BulletMLのここが良い 記述が簡単。 XMLなんて書く分にはそんなに難しくないです。 htmlに毛が生えたようなもんさね。 毎回コンパイルしなくていい。 ていうかプログラムに弾幕の動きを記述する