タグ

C++に関するizariuo440のブックマーク (362)

  • A Basic Glance At The Virtual Table - xavier roche's homework

    Virtual Functions, vtable And Other Monsters C++ inheritance, virtual functions, and virtual tables are sometimes sees as obscure beasts, something most people will not mess with. Casting an object to another one or calling a virtual function are probably two of the most common operations you can think of in C++, so it is a shame that such simple operations are not fully understood by everyone. I

    izariuo440
    izariuo440 2015/10/20
    C++ のメモリレイアウトを C で書いて学ぶ方法
  • Dumping a C++ object's memory layout with Clang - Eli Bendersky's website

    When one wants to understand the memory layout of structures and classes, the C/C++ operators sizeof and offsetof are very useful. However, when large C++ class hierarchies are involved, using these operators becomes tedious. Luckily, Clang has a very handly command-line flag to dump object layouts in a useful manner. This flag is somewhat hidden since it's only accepted by the Clang front-end (th

    izariuo440
    izariuo440 2015/10/20
    C++ のメモリレイアウトを clang で確認する方法
  • C++の関数オブジェクトが関数よりどれだけ速いか - でも今日はSRMあるから

    C++では関数オブジェクトのほうが関数より速い。呼び出しの時間に差がある様子。 数回呼ぶだけなら誤差だが呼ぶ回数が増えるとその速度は有利。 ソート std::sortの比較関数に関数や関数オブジェクトを与える。 関数 bool cmp(int x, int y) { return x < y; } 関数オブジェクト struct cmp_c { bool operator()(int x, int y) { return x < y; } } cmp; ファンクタとかファンクショノイドとか呼ばれる。cmpは上の関数のcmpと同じように呼ぶことができる。 ラムダ式 auto cmp = [](int x, int y) -> bool { return x < y; }; C++11の記法。関数オブジェクトが作られる。 cmpの型はfunction< bool(int,int) >かと思われ

    C++の関数オブジェクトが関数よりどれだけ速いか - でも今日はSRMあるから
    izariuo440
    izariuo440 2015/08/08
    std:sort はテンプレートなので最適化で比較関数がインライン展開されたりして関数呼び出しのオーバーヘッドが無くなる分速くなるはず。
  • C++プログラマであるかを見分ける10の質問 - Cube Lilac

    「優れたPerlプログラマを見分ける27の質問」の日語訳 - Islands in the byte stream, Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ を見ながら C++ だとこれくらいかなぁと取りあえず作ってみました.前半は単純な機能の説明,後半は実際にどのように使って(使い分けて)いくかについての質問になっています.選択基準としては,特に後半部分は,自分が観測できている C++ 界隈で論争になったトピックを中心に取り上げています. iterator の役割について説明せよ. *_cast およびCスタイルのキャストそれぞれについて概要を説明せよ. overload と override と hiding の違いについて説明せよ. const の機能について概要を説明せよ. 多重継承について概要を説明せよ. ポインタの使用方法について,メモリーリー

    C++プログラマであるかを見分ける10の質問 - Cube Lilac
  • メモリーリークしないのか!

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 765 記事 - 1 コメント - 18180 トラックバック - 114 ニュース ツイート とっちゃんって? MS-MVP for Developer Technologies MVP プロフィール Since 2005/10- コミュニティ わんくま同盟 わんくま同盟 掲示板ITの記事 あなたのアプリにはどのインストーラが最適? CodeZineの記事 Windowsアプリケーションで「処理中」を表現する ・前編 ・後編 WiX ではじめるWindows Installer作成入門 ・第1回 ・第2回 ・第3回 ・第4回 ・第5回 ・第6回 WiX チュートリアル WiX tutorial WiX チュートリアル(日語訳) Windows ユーザー エクスペリエンス ガイドライン Windows ユー

  • C++ Network Library — cpp-netlib v0.7 documentation

    Welcome¶ The cpp-netlib is a library that provides application layer protocol support using modern C++ techniques. It is light-weight, fast, cross-platform and is intended to be as easy to configure as possible. It is developed by people linked to the Boost community and will at some point in the future be submitted for review into Boost. A presentation about cpp-netlib was given at BoostCon 2010,

  • re2 - Project Hosting on Google Code

    This is the source code repository for RE2, a regular expression library. For documentation about how to install and use RE2, visit https://github.com/google/re2/. The short version is: make make test make install make testinstall Building RE2 requires Abseil (https://github.com/abseil/abseil-cpp) to be installed on your system. Building the testing for RE2 requires GoogleTest (https://github.com/

    re2 - Project Hosting on Google Code
  • androgeek.info

    https://x1310y36683.suzannekeene.info https://x1312y22707.mob-con.info https://x239y24351.healthy-navi.info https://x1221y21632.theunblockedbay.info https://x885y46795.affiliate-strategy.info https://x442y26237.androgeek.info https://c1725d79049.affiliate-strategy.info https://x1208y21480.psychotestfinden.info https://x1217y21578.carinsurancequotesnj365.info https://x1092y33823.intweb.info https:/

  • Emacs flymakeでC++ソース編集中にコンパイルエラーを検出

    [ C++で開発 ] Emacs flymakeで編集中にコンパイルエラー検出 統合開発環境Eclipseは、C++開発でもソースを編集中にコンパイルエラーとなる箇所を検出します。これは大変うれしい機能ですが、なんとEmacsでも同様の機能があります。 Emacs 22でflymake.elが標準搭載されており、これを使ってEmacs上でソースコードを編集中にコンパイルエラー検出を実現します。 使用方法-Linux/GCC Linux/GCC上でのflymakeの使用方法を記述します。 簡単な使用方法 flymakeは、makeコマンドを呼び出して編集中のバッファのコンパイルエラーチェックを行います。makeの呼び出しは以下のようになるので、対応するMakefileを記述します。 make -s -C . CHK_SOURCES=hoge.cpp SYNTAX_CHECK_MODE=1 c

  • More C++ Idioms/小粋なカウンタ(Nifty Counter) - Wikibooks

    //Stream.hpp class StreamInitializer; class Stream { friend class StreamInitializer; public: Stream () { // コンストラクタは使用前に呼び出されなければならない。 } }; static class StreamInitializer { public: StreamInitializer (); ~StreamInitializer (); } initializer; // このオブジェクトはヘッダにあることに注意せよ。 //Stream.cpp static int nifty_counter = 0; // ロード時、すなわちどの静的オブジェクトの初期化よりも前に、カウンタは初期化される。 StreamInitializer::StreamInitializer () { if

  • OAuth認証 - 日々量産

    以前書いたものが一部間違えていたりと酷かったので、整理して書き直してみました。 それでも汚いし、間違いもありそうだけど。 調べれば図とかで解説してくれているところもあるので、そこを見るのもいいのです。 今回は、OAuth認証を通過するために実装する面で役に立てると思う話を書いてみます。(これも調べると沢山でます) まず、仕様をざっと見るのがいいです。 僕は英語は読めませんが、ここを見ればどういう値を渡せばよいかぐらいは判断できます。 OAuth Core 1.0 Revision A http://oauth.net/core/1.0a/ 今回はTwitterを例にとって見ます。 APIドキュメントも公開されていますので、Twitter APIを利用する場合は参照することになるでしょう。 http://dev.twitter.com/doc#OAuth 手順の確認 OAuth認証を通過する

    OAuth認証 - 日々量産
  • Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場

    たとえば libevent のような C 言語でかかれたイベント駆動型のライブラリを C++ から使っていると、C++ のメンバ関数をコールバックとしてセットできたらうれしいことが多いですよね。以下のようにすればできます。 たとえば、コールバック関数をセットする関数の型が、 void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); なら、以下のようにクラスとメンバ関数を引数にとるテンプレート関数を定義し、 template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以下のように受け渡せばいい。 class K { publ

    Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場
  • POCO C++ Libraries - Simplify C++ Development

    The POCO C++ Libraries are powerful cross-platform open-source C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. Latest Release: 1.13.3 [Changelog] Get Started! The POCO C++ Libraries have been trusted by C++ developers worldwide for 19+ years to build challenging and mission-critical applications in a wide variety o

    POCO C++ Libraries - Simplify C++ Development
  • cpprefjp

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

  • アセンブラコードで見るC++ Composer XEの強力な最適化機能 | OSDN Magazine

    インテル C++ Composer XEには、強力な最適化機能を備えるコンパイラが含まれている。インテルCPUが備えるSSEやAVXといった機能を効率的に利用するコードや、マルチコアによる並列処理を行うコードを自動的に生成できるのが特徴だ。記事ではインテル C++ Composer XEが持つさまざまな最適化機能を紹介するとともに、コンパイラが出力するアセンブラコードをチェックしてその効果を探っていく。 無視できないコンパイラの最適化機能、アプリケーションによっては数十パーセントものパフォーマンス向上も 近年のCPUの進化に伴い、コンパイラの最適化機能が注目されるようになってきた。パイプライン化やキャッシュの大容量化、分岐予測や投機的な実行といった機能の採用など、CPUの内部アーキテクチャは進化を続けている。そのため、コンパイラにはCPUのリソースを効率良く利用できるバイナリコードを生成

  • ニコニココメントサーバーにおけるメモリ使用量増大問題の調査と対策 - ドワンゴ 研究開発ブログ

    はじめに コメントサーバーは、ニコニコ関連サービスのコメントを司るサーバーである。稿は、ニコニコ広場で起こったコメントサーバーメモリ使用量増大問題について、我々コメントサーバー担当が行った調査と対策のまとめである。 今回のメモリ増大問題の解決にあたり、「仮説を立てる + 計測する→修正する→確認する」というパターンを繰り返した。このパターンは、ソフトウェアの様々な問題を調査するのに適用できる、基パターンである。 コメントサーバー概要 コメントサーバーについて簡単に概説する。 コメントサーバーはニコニコ関連サービスのコメントを管理するサーバーである。基的な機能は、新しいコメントの保存、およびコメントの出力である。ニコニコサービスのユーザーがコメントサーバーに直接触れることはなく、ニコニコのプレイヤーがコメントサーバーと直接やりとりを行う。ニコニコ動画の例でいうと、コメントサーバーを使用

  • 開発メモ: 50行のC++コードでWebサーバを実装する

    「Kyoto Tycoonの設計 その四」改め、50行でWebサーバを書く方法を解説する。前回実装した「多重I/Oマルチスレッド汎用TCPサーバ」の上にHTTPの処理を行う層をつけて、「多重I/Oマルチスレッド汎用HTTPサーバ」を司るクラスを実装してみたので、それを使ってちょちょいとやる。 URLクラス HTTPと言えばURLが使えないと意味がない。URLは単なる文字列として扱ってもよいのだが、様々なシーンで分解や加工が必要になり、その処理はなにげに複雑で面倒なので、予めクラスとして導出しておいた方がよいだろう。 class URL { public: // 文字列のURLを解析して内部構造を作る void set_expression(const std::string& expr); // スキーム要素を設定する void set_scheme(const std::string&

  • #include の魔力 - Cube Lilac

    何気なく呟いた言葉が確変状態になっていました。 それで、反応を眺めていると「何をやってるか分からない」と言うものがいくつかあったので、一応簡単な補足説明を載せておきます。 #include は指定したファイルの内容をその位置に追加します。 1, 2, 3, 4, 5, 6, 7, 8, 9,例えば、上記の内容を hoge.csv と言う名前で保存して、 int hoge[] = { #include "hoge.csv" }; と記述すると、(プリプロセスが終了すると)以下のように記述した事と同じになります*1。 int hoge[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, }; このように、#include を利用することによって、内容が変化しない*2データ配列などの定義を自力で打ち込んだりコピペしたりせずに済むようになります(なることがあります)。s/int/co

    #include の魔力 - Cube Lilac
    izariuo440
    izariuo440 2010/09/05
    magic.
  • テンプレートの部分特殊化 - Wikipedia

    テンプレートの部分特殊化 (Partial template specialization)は、C++の用語で、テンプレートにおいて、特定のテンプレート実引数が与えられたときに、元と異なる定義を使用させるようにする仕組みである。 テンプレートはメタクラスである。つまりコンパイラに対してどのようなクラスを作るかを指示したある種の抽象データ型であると言える。たとえばテンプレートであるvector(動的配列)をプログラマが使うときには、vector<int>、vector<string>などのようにデータ型を指定して実体化する。実体化されたvectorは、コンパイラの生成したオブジェクトコードの中ではそれぞれ別のコードが生成され、それぞれ別のクラスとして扱われる。 もしテンプレートクラスは特定のデータ型を指定して使われることが多いと知っており、そのデータ型の場合にだけ人の手で最適化をかけられる(

  • EASTL

    EASTL -- Electronic Arts Standard Template Library Paul Pedriana Electronic Arts ppedriana at ea.com Abstract Gaming platforms and game designs place requirements on game software which differ from requirements of other platforms. Most significantly, game software requires large amounts of memory but has a limited amount to work with. Gaming software is also faced with other limitations such as we

    izariuo440
    izariuo440 2010/07/16
    EA の人が作った STL。ゲーム向け。こんなのあるのかー。