C++に関するpsyqのブックマーク (30)

  • シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita

    漢は黙ってシングルファイル C/C++ ライブラリですね! シングルファイル C/C++ ライブラリとは, ヘッダファイル .h ひとつだけで機能が実装されているライブラリ(もう少し条件をゆるくして .cc も含む)のことです. header-only とも言われれたりします. このあたりの元祖は nothings 先生 http://nothings.org/ ですね. 最近は github にコードをあげています. https://github.com/nothings/stb シングルファイル系のライブラリまとめ一覧もあります. シングルファイル系が便利すぎてやばいので, 自分でもいくつか作りました. TinyObjloader(Wavefront .obj loader) https://github.com/syoyo/tinyobjloader TinyEXR(OpenEXR

    シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • プログラムを高速化する話

    9. 9 最適化について 「細かい効率のことは忘れて、時間の 97% について考え よう。時期尚早な最適化は諸悪の根源だ。それでも残り 3% についても機会を逃すべきではない」 - Donald E. Knuth 「プログラム最適化の第一法則 : 最適化するな。 プログラム最適化の第二法則 ( 上級者限定 ): まだするな。 」 - Michael A. Jackson 11. 11 最適化の対象 主に Intel の Haswell マイクロアーキテクチャ以降を対象 多くのテクニックは他のプロセッサにも応用できます ベース マイクロアーキテクチャ プロセスルール 登場年 Nehalem Nehalem 45nm 2008 〃 Westmere 32nm 2010 Sandy Bridge Sandy Bridge 32nm 2011 〃 Ivy Bridge 22nm 2012 Hasw

    プログラムを高速化する話
  • プログラミング覚書

    ここでは C++Windows でのプログラミングに関する Tips 等を書き留めていきます。Windows の方は所々 MFC の話も混ざっています。draft なので、内容が変わる場合が多々あります(言い訳)。口調が違うところも所々に見つかりますが、気にしないで下さい。

  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

    psyq
    psyq 2013/10/28
  • 本当は怖くないムーブセマンティクス - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2012の15日目にエントリしています。 内容はC++11「ムーブセマンティクス」の入門記事となっています。 もくじ ムーブセマンティクス再考 シンタックス vs. セマンティクス コピー vs. ムーブ ムーブのもつ2つの意味 C++11のムーブセマンティクス対応 auto_ptrからunique_ptrへ auto_ptrの暗い過去 unique_ptrへの移行 std::moveの役割 ムーブセマンティクスを使おう C++11標準ライブラリとムーブ ムーブ"後"の中身は? ムーブを利用して関数を書く (文のみ約9500字) まえがき To move or not to move: that is the question. ― Bjarne Stroustrup, 2010(改)*1 プログラミング言語C++の新しい国際標準規格*2

    本当は怖くないムーブセマンティクス - yohhoyの日記(別館)
    psyq
    psyq 2013/04/25
  • C++アプリケーションの効率的なテスト手法(CppUnit編) ― @IT

    第2回 C++アプリケーションの効率的なテスト手法(CppUnit編):連載 C++開発者のための単体テスト入門(1/4 ページ) 連載目次 前回は単体テストの重要性を示し、従来のC/C++でのテスト手法であるprintf関数やassertマクロを使ったテストを紹介しました。この2つのテスト手法は開発環境(コンパイラとライブラリ)さえあれば利用でき、その使い方も簡単です。しかしながら、いずれも系統立てて、効率よくテストを行うには力不足の感が否めません。 今回は、Visual C++ 2005 Express Editionを含むVisual Studio 2005(以後、VS 2005)で利用できる代表的な単体テスト・フレームワーク(Unit Test Framework)の1つである「CppUnit」を紹介します。 ■単体テスト・フレームワークとは? 前回、「バグは早期発見が望ましい。早

    C++アプリケーションの効率的なテスト手法(CppUnit編) ― @IT
    psyq
    psyq 2013/02/22
  • 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

    psyq
    psyq 2012/08/29
    “文字列処理やネットワークプログラミングの補助などを行うための, ヘッダファイルのみで構成された C++ ライブラリです. CLX C++ Libraries は, BSDライセンスで配布しています”
  • オブジェクト指向できていますか?

    3. 自己紹介 1992年~1997年 某ゲーム会社 プログラマ SFC,GB,PS1,N64のゲーム開発経験 1998年~現在 日工学院八王子専門学校 @mozmoz1972 専任講師 プログラミング教育を中心に担当 twitterもfacebookも実名です。よかったらフォローしてください。

    オブジェクト指向できていますか?
    psyq
    psyq 2012/08/29
    最初に注意書きがあるように、ここにあることをコーディング規約としてそのまま使うのは現実的じゃないけど、方向として賛同できる。極端になってるがゆえにわかりやすい。
  • malloc(3)のメモリ管理構造 VA Linux Systems Japan

    malloc()といえばC言語ではお馴染みのライブラリで、最も良く使用されるライブラリの一つです。しかしその分だけ何らかの不具合を経験した人も多いのではないでしょうか。書ではmalloc()、free()で確保、解放されるメモリリソースが内部的にどのように管理されているかを説明していきます。mallocライブラリの仕様を理解する事で、ライブラリ使用時に何らかの不具合が発生した際の手助けになればと思います。 ここではLinuxディストリビューションで標準的に使用されているglibcのmallocライブラリを扱います。今回の調査では次の環境を使用しています。 ディストリビューション :Debian sarge パッケージバージョン :glibc-2.3.2.ds1-22 OS : i386 Linux 書では、上記の通りi386アーキテクチャの場合について記述しています。

    psyq
    psyq 2012/04/06
    glibcのmalloc関数の実装について詳細に解説。
  • バッファキャッシュとAIO(1)

    プロセスがブロックする要因の一つにファイルI/Oがあります。これを同期I/Oと言いますが、POSIXではAIO(非同期 I/O、Asynchronous I/O)も定義しており、I/O中でもプロセスがブロックせず他の処理を進められるようになります。 記事ではバッファキャッシュからファイル I/Oを解説し、Linuxのio_submit(2)を用いたPOSIX準拠のAIOライブラリを試作してみます。 ファイルI/Oとバッファキャッシュ io_submit(2)ではDirect I/Oを用いますが、ライブラリの試作へ進む前にまずファイルI/Oのバッファ(バッファキャッシュ)について整理します。実は単にバッファと言ってしまうと誤解される場面が多くあり、例えばプログラミング入門一般としてファイルI/Oを取り上げる際には、 CPUの動作は速い。ディスクの動作は遅い。 両者の間に速度差を緩和する緩衝

    バッファキャッシュとAIO(1)
    psyq
    psyq 2012/04/06
  • インテル oneTBB

    開発ツールスイート インテル® oneAPI ベース・ツールキット インテル® HPC ツールキット インテル® レンダリング・ツールキット インテルの AI ツール クラウド・プラットフォーム インテル® デベロッパー・クラウド コンパイラー インテル® oneAPI DPC++/C++ コンパイラー インテル® Fortran コンパイラー インテル® Fortran コンパイラー・クラシック NVIDIA*/AMD* GPU 向け Codeplay プラグイン パフォーマンス・ライブラリー インテル® oneMKL インテル® IPP インテル® oneTBB インテル® oneDAL インテル® MPI ライブラリー 分析、解析ツール インテル® VTune™ プロファイラー インテル® Inspector インテル® Advisor インテル® Trace Analyzer &

    インテル oneTBB
    psyq
    psyq 2011/11/07
    インテルTBBの公式チュートリアルや公式リファレンスの日本語版がある。
  • オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine

    C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。記事ではこのTBBの概要と、基的な使い方を解説する。 C/C++で並列アプリケーションを実装する手法として、並列化したい処理をOSのAPIを用いてマルチスレッド化する、もしくは並列プログラミングの規格である「OpenMP」を利用する、といったものが知られている。これらについては以前の記事でも紹介しているが、マルチスレッドを利用した実装は柔軟性がある一方で手間が掛かり、OpenMPは比較的手軽だが柔軟性に欠けるなど、それぞれに長所と短所がある。 また、

    オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine
    psyq
    psyq 2011/11/07
    インテルTBB(スレッディング・ビルディング・ブロック)は、C++で並列処理を行うためのテンプレートライブラリ。
  • Google Sites: Sign-in

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

    psyq
    psyq 2011/06/23
    EAWebKitはエレクトロニック・アーツ 社が開発したC++ライブラリ。オープンソースだけどLGPLなので商用利用には注意。前に紹介されてたゲーム開発向けのSTLのEASTLとかが入ってる。http://d.hatena.ne.jp/i-saint/20101012/1286822888
  • C++ でのビルド時間を短縮するいくつかの方法 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    ある程度大きな C++ のコードを書いたことがある人なら大抵はこの問題について考えますよね。まして Boost なんて使っていた日には「コンパイル時間が Boost される」とか言われる訳です。 コンパイル時間を活用してコーヒー入れたりトイレ行ったりブラウジングしたり Twitter に「リビルドなう」とか Post したりといった素晴らしい方法もありますが、ここではビルド時間を短縮する方法を考えていきます。 事前知識 多分どこでも言われてることだと思いますし、結構適当に書いてるので読み飛ばしてもいいと思います。 コンパイルが遅い原因 C++ のコンパイル時間の多くは、プリプロセッサにあります。プリプロセス時に行われる include やマクロの展開でかなり多くの時間を取っています。 きっと Boost.PP なんて使っていた日には「コンパイル時間が Booooooooooooooooos

    C++ でのビルド時間を短縮するいくつかの方法 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • std::functionの真に正しい実装

    だいぶ前の記事では、target()の意味を勘違いしていた。void *へのキャストが出てくるので、おかしいと思ったのだ。しかし、std::functionのtargetって誰が使うんだ、これ。 namespace hito { class bad_function_call : public std::exception { public: bad_function_call() {} virtual char const * what() const throw() { return "bad function call exception" ; } } ; template < typename > class function ;// primary template. template < typename R, typename ... ArgTypes > class fun

    psyq
    psyq 2011/04/26
    std::functionの簡易的な実装。マクロを使ってないので読みやすい。
  • SDLdoc-jp: SDLdoc Japanese translation project

    概要 このプロジェクトは、クロスプラットフォームのマルチメディアライブラリ SDL についての ガイドと API リファレンスとして、Martin Donlon氏によって書かれた SDL Library Documentationを 日語に翻訳して公開する事を目的にしています。 公開後は、家の更新に追従してできるだけ日語版も更新し、 日語版に対するフィードバックはできるだけ家にも反映させるように したいと考えています。 成果物 翻訳作業が一通り終了し、1.2.4 のマージも済みましたので スナップショット sdldoc-jp-1.2.4-rev01 を公開しました。 HTML 版 (ミラー) SGML ソースのアーカイブ (ミラー) HTML 版のアーカイブ (ミラー) 翻訳内容に対するご意見・ご感想を歓迎します。 SDL-fan-jpメーリングリスト で受け付けています。

    psyq
    psyq 2011/03/19
    “クロスプラットフォームのマルチメディアライブラリ SDL についての ガイドと API リファレンスとして、Martin Donlon氏によって書かれた SDL Library Documentationを 日本語に翻訳”
  • EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1

    (2016/02/10 追記: EASTL は長らく EAWebKit の一部としてライセンスが不明瞭なまま公開されていましたが、この日 BSD ライセンスで正式に公開されました https://github.com/electronicarts/EASTL) 若干古いものですが、2007 年に発表された、Electronic Arts によるゲーム開発向けの改良を加えた STL、"EASTL" の仕様。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 仕様だけで実装が公開されてないのが非常に残念なのですが、それは別として、何故こんなものが必要なのか、どういう事情でこの機能が盛り込まれたのか、といったゲーム開発現場の事情が細かく解説されていて、とても参考になります。特に、既にある程度 C++ に習熟してい

    EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1
    psyq
    psyq 2011/02/28
    2007年に発表された、EAによるゲーム開発向けの改良を加えたSTLの仕様。実装は公開されてないが、ゲーム開発におけるプログラム作業の事情が解説されていて参考になる。
  • マルチコア時代のLock-free入門 - yamasaのネタ帳

    日、並カンにてLock-freeアルゴリズムについて発表しました。発表資料は以下になります。 なお、今回の発表で割愛したメモリバリアの詳細については、以下の発表資料を参照ください。 そろそろvolatileについて一言いっておくか また、Hazard pointerやタグ付きポインタを使用したサンプルコードを以下に置いています。こちらも参考にどうぞ。 yamasa/lockfree - GitHub マルチコア時代のLock-free入門View more presentations or Upload your own.

    マルチコア時代のLock-free入門 - yamasaのネタ帳
    psyq
    psyq 2011/01/28
    「lock-freeアルゴリズム」は、マルチスレッド化において並列性を高めるため、スレッドセーフを保ったままロックをなるべく行わないような手法。C++0xのstd::atomicの使い方。
  • クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development

    こんにちは、人恋しい季節になってきましたね。 研究開発チームの祢次金(@nejigane)と申します。 エントリではCinderというクリエイティブなコーディング向けのライブラリについてご紹介したいと思います。 Cinderとは Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。 同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、WindowsMacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。 細かい機能/特徴の紹介は家サイトに譲るとして、Cinderを極めるとどのぐらいクリエイティブな

    クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development
    psyq
    psyq 2010/11/19