タグ

C++に関するWackyのブックマーク (497)

  • Visual C++ 2010に追加されたSTLアルゴリズム

    この記事が公開される頃にはVisual Studio 2010のパッケージ販売が始まっているでしょうか。MSDN Subscriptionでは先行提供されていますし、各言語のExpress版が公開されていますから、初物(?)の好きなミナサマは早速遊んでいらっしゃることと思います。 C++屋の僕にとって一番嬉しかったのはVisual C++ 2010(vc10)でC++0xに(完全ではないにせよ)準拠してくれたこと。特にlambda式にはドキドキさせられました。lambda式のサポートにより、より明快でコンパクトな表現が可能になりました。正規表現(regex)や配列(array)、賢いポインタ(shared_ptr/weak_ptr)などなど、サポートが待ち望まれていたクラス群が追加されています。稿ではvc10で新たに追加されたSTLアルゴリズムを一気に紹介します。 以降、プロトタイプと説

    Visual C++ 2010に追加されたSTLアルゴリズム
    Wacky
    Wacky 2010/06/17
  • インテルTBB 3.0によるパイプライン処理

    オープンソースのマルチスレッドライブラリ、インテルTBB(Threading Building Blocks、以下TBB)がversion 3.0となりました。Visual C++ 2005(vc8)、2008(vc9)に加え、2010(vc10)にも対応しています。TBBのインストール・ディレクトリを環境変数TBB30_INSTALL_DIRにセットしておけば、インクルード/ライブラリディレクトリの設定はVS2010 IDEのプロジェクト・プロパティでそれぞれ次のようになります。 インクルード: $(TBB30_INSTALL_DIR)\include ライブラリ: $(TBB30_INSTALL_DIR)\lib\ia32\vc10 さらにTBBのDLLが$(TBB30_INSTALL_DIR)\bin\ia32\vc10にありますから、ここにPATHを通すか、DLLをPATHの通った

    インテルTBB 3.0によるパイプライン処理
    Wacky
    Wacky 2010/06/09
    オープンソースのマルチスレッドライブラリ、インテルTBB(Threading Building Blocks、以下TBB)がversion 3.0となりました。
  • 「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう

    http://longgate.co.jp/products.html 弊社、株式会社ロングゲートで、プログラミング雑誌を作るというプロジェクトが進行しています。 書創刊の目的は、プログラミングの入門記事が巷に溢れる今、プログラマのさらなる成長のため情報発信を行い、業界全体の技術力を向上させることです。 雑誌といっても、記事の質を保つために不定期刊行としていることから、実際には雑誌ライクな書籍となります。 書籍名は「プログラミングの魔導書〜Programmers' Grimoire〜」です。 創刊号となる今回のテーマは、サブタイトルにも含まれている「C++」です。全ての記事がプログラミング言語C++に関するものとなっています。 Vol.1のテーマをC++としたのは奇をてらったものではありません。 C++は習得の難しい言語と言われておりますが、近年はBoost C++ Librariesに

    「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう
    Wacky
    Wacky 2010/06/01
  • Visual C++ 2008 Express Edition + distutils で x64 ターゲットを扱うには - moriyoshiの日記

    Windows SDK をインストールし、x64 コンパイラ、ヘッダ、ライブラリをインストールしただけではだめで、次の操作が必要だった。 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin にある以下のファイルを以下の場所に移動 (+リネーム) する。 vcvars64.bat -> amd64\vcvarsamd64.bat vcvars64.txt-> amd64\vcvarsamd64.txt vcvarsx86_amd64.bat -> x86_amd64\vcvarsx86_amd64.bat vcvarsx86_amd64.txt -> x86_amd64\vcvarsx86_amd64.txt vcvarsx86_ia64.bat -> x86_ia64\vcvarsx86_ia64.bat vcvarsx86_

    Visual C++ 2008 Express Edition + distutils で x64 ターゲットを扱うには - moriyoshiの日記
    Wacky
    Wacky 2010/05/14
    C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin にある以下のファイルを以下の場所に移動 (+リネーム) する。
  • https://moriyoshi.hatenablog.com/entry/20100428/1272452495

    Wacky
    Wacky 2010/05/14
    ループの unroll から始まって、何もかもが展開されている。
  • 「Boost.Python で C++ から Python の関数オブジェクトをコールする」より簡便な方法 - moriyoshiの日記

    http://d.hatena.ne.jp/ousttrue/20100204/1265291359 たまたま目にしたので。 生の PyObject* を触らなくとも、 #include <boost/python.hpp> void call_python_func(boost::python::object func) { func(123); } BOOST_PYTHON_MODULE(calling_python_func) { boost::python::def("call_python_func", &call_python_func); } これだけで OK ですよ。 実行結果: Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type

    「Boost.Python で C++ から Python の関数オブジェクトをコールする」より簡便な方法 - moriyoshiの日記
  • boost.pythonでC++からpythonの関数オブジェクトをコールする。 - 三次元日誌

    boost.pythonのFAQにはこんなの http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/faq.html#funcptr が載っているがそりゃ無理だろうとw そうじゃなくて、普通にpythonのオブジェクトを取り出してコールする方法について。 #include <boost/python.hpp> #include <iostream> void pyExec(PyObject *func) { std::cout << "## pyExec ##" << std::endl; if (PyCallable_Check(func)) { PyEval_CallObject(func, NULL); } else{ std::cout << "not callable" << std::endl; } } BOOST_PY

    boost.pythonでC++からpythonの関数オブジェクトをコールする。 - 三次元日誌
  • vcのmanifestに悩まされる - 三次元日誌

    R6034が出て頓挫中。 Blenderのビルドに使ったpython26.dllのmanifestとswigで作ったエクステンションのmanifestが合っていないっぽい? この際、埋め込んだmanifestを取り出してどこがおかしいか調べられるようになりたいところだがどうも良く判らん。 nmakeとかコマンドライン系の余計なことはせずに大人しくvc使っとけという暗黙のメッセージを感じる。 vcのmanifestはなんか腹が立つ。 Side-by-Side Assemblies http://msdn.microsoft.com/en-us/library/ms235624%28VS.80%29.aspx http://msdn.microsoft.com/ja-jp/library/ms235342%28VS.80%29.aspx http://ja.wikipedia.org/wiki

    vcのmanifestに悩まされる - 三次元日誌
  • swigでpython bindingのメモ - 三次元日誌

    ポリゴン読み込みライブラリのswigを使ったpythonバインディング実験が完了した。 これを使ってBlenderのmqo, pmd, vmdのインポータのデータ読み取り部分を置き換えての動作も確認できたので、今回は予定通りswigを採用することにする。使ってみて気付いたことなどをメモ。 遅くなってしまった フルpythonで書いていたインポータより遅くなった。C++で書いているのでデータの読み込みは一瞬で終わるのだが、読み込んだデータをpythonとやりとりするのが遅い。 たぶん、 %template(VertexVector) std::vector<meshio::pmd::Vertex>; こういうのがよろしくない。 これをpython側でfor文で回したときに意図しないnewとかが呼ばれている気がする。 ポインタじゃなくて実体の入った巨大vector(頂点配列やモーションで使う)

    swigでpython bindingのメモ - 三次元日誌
  • メソッド追加 - 三次元日誌

    元となるc++のソースを改造せずにswigクラスのみにメソッドを追加する。 いくつか方法がある。 c++で追加する http://blog.ssktkr.com/swig-jp/_/Python.html#n43 pythonで追加する http://old.nabble.com/Python:-Adding-Pure-Python-Methods-to-Shadow-Class-td22923954.html pythonで既存メソッドを置き換える・呼び出し前後に処理を追加する %feature("shadow"), %feature("pythonprepend"), %feature("pythonappend") http://www.swig.org/Doc1.3/Python.html#Python_nn43

    メソッド追加 - 三次元日誌
    Wacky
    Wacky 2010/05/11
    元となるc++のソースを改造せずにswigクラスのみにメソッドを追加する。
  • std::vectorがどうなっているか - 三次元日誌

    vertices.h #include <vector> struct Vertex { float x; float y; float z; }; struct Container { std::vector<Vertex> vertices; }; に対してswigインターフェース vertices.i %module vertices %{ #include "vertices.h" %} %include "vertices.h" %include "std_vector.i" %template(VertexVector) std::vector<Vertex>; とした時にVertexVectorがどんな実装になるか。 とりあえず $ swig -python -c++ vertices.i $ ls vertices* vertices.h vertices.i vertic

    std::vectorがどうなっているか - 三次元日誌
  • python3の文字列 - 三次元日誌

    python2から3で unicode -> str str -> bytesに変わってswigでのstd::stringの中身がutf-8決め打ちになっている。 http://docs.python.org/py3k/c-api/unicode.html swigのhoge_wrap.cpp #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromStringAndSize(carray, static_cast< int >(size)); #else return PyString_FromStringAndSize(carray, static_cast< int >(size)); #endif cp932を生で持たせて後で何とかする手が使えない。 typemapか。

    python3の文字列 - 三次元日誌
    Wacky
    Wacky 2010/05/11
    python2から3でswigでのstd::stringの中身がutf-8決め打ちになっている
  • swig(python編) - 三次元日誌

    とりあえずpython2から。 VC9ExpressEditionで家のcpythonバージョン2.6向けのモジュールをビルドしたメモ。 swigは最初cygwinのものを使ったが、バージョンが1.3.38とちょっと古かったのでswigのサイトでwindows向けビルド(1.3.40)を落としてきた。ついでなので2つのswigの出力結果を比べてみたところわりと違った。たぶん改行コードの違いとバージョンの違いが主だと思うが、最新版のWindowsビルドを使うほうが無難な気がする。 後で使う予定のポリゴンローダを模した練習用のC++コード main.cpp #include "loader.h" #include <iostream> int main(int argc, char **argv) { Loader l; if(!l.read(argv[1])){ return 1; } s

    swig(python編) - 三次元日誌
  • Concurrency Runtime

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    Concurrency Runtime
    Wacky
    Wacky 2010/04/28
    同時実行ランタイムにより、並列プログラミングが簡略化され、信頼性が高く、スケーラブルで、応答性の高い並行アプリケーションを作成できます。
  • 並列処理を行うための基礎知識(Visual C++)(1/2) - @IT

    書籍転載 文法からはじめるプログラミング言語Microsoft Visual C++入門 並列処理を行うための基礎知識(Visual C++) ――第13章 並列処理~マルチスレッドプログラミング(前編)―― WINGSプロジェクト 矢吹 太朗(監修 山田 祥寛) 2010/04/13 コーナーは、日経BPソフトプレス発行の書籍『文法からはじめるプログラミング言語Microsoft Visual C++入門』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などをサイトのデザインに合わせている部分が若干ありますので、ご了承ください。『文法からはじめるプログラミング言語M

    Wacky
    Wacky 2010/04/16
    ネイティブスレッド, スレッドクラス(Boostのthreadや.NETのSystem::Threading::Thread),Intel Threading Building Block,OpenMP
  • KMC Staff Blog:LLVM の JIT を使ってみる (3)

    Wacky
    Wacky 2010/04/02
    LLVM の JIT API を使うと、関数を返す(作る)関数が書けます。肝は ExecutionEngine の getPointerToFunction() API で、JIT 済みの関数(コード)へのポインタを取得できます。
  • 第3回 マルチスレッド/子プロセス/共有ライブラリ | gihyo.jp

    関数呼び出しにおける基的な情報採取に関しては、前回までに説明した手法で十分なのですが、実際の情報採取の際には気を付けるべきトピックが幾つかあります。 今回は、それらのトピックについて説明したいと思います。 マルチスレッド マルチスレッド化によって性能や応答性の向上を実現するケースは、少なくないでしょう。 特に近年は、個人のデスクトップPCやノートPCでさえ、物理的に複数コアのCPUを搭載するご時勢ですので、CPUの使用効率を高める上でもマルチスレッド化の流れは加速するものと思われます。 マルチスレッド稼動時の関数フロー マルチスレッドで稼働中のプロセスから DTraceで関数フローを採取した場合、どのような出力が得られるでしょうか? 各スレッドで、リスト1に示すような処理を行う状況を仮定します。 リスト1 各スレッド上で実施される処理 void* running(void* arg) {

    第3回 マルチスレッド/子プロセス/共有ライブラリ | gihyo.jp
    Wacky
    Wacky 2010/04/02
    マルチスレッド稼動時の DTrace 出力の問題点は,それがどのスレッドで採取されたものかがわからない点にあります。
  • C++/CLIについてのよくある誤解 - デ-mk6

    以前にも書いたような気がしますが、もう一度書きます。C++/CLI(仕様の邦訳)は、.netからC++やその他ネイティブコードのライブラリを楽に使えるようにするためと、そのための作業を楽に行うための言語です。「.netで使えるC++」ではありません。そういうことを言う人は悉くこの言語の厳つい顎で頭を砕かれ、手足をもがれて、腸をらい千切られ死にます。それが摂理なのです。あらがえません。C++/CLIは大きく分けてC++と、C++風構文を持つ何か.netっぽい言語(ここでは仮に「Cヰ」と呼びましょう)からなる、キメラです。二つの言語のコードは一つのファイルに混ぜて書くことができます。C++の部分はそのままC++です。何も違いはありません。GCもありません。ありませんが.netのGCにネイティブオブジェクト(要するにC++で作ったオブジェクト)を通知して管理させる方法はあります。interfa

    C++/CLIについてのよくある誤解 - デ-mk6
    Wacky
    Wacky 2010/03/26
  • Windowsでfopenを使ってはいけない!? : DSAS開発者の部屋

    Windows環境でsvn+ssh:// からの bzr branch に失敗するという報告があり、調べてみたところ面白いことが判ったので記事にしておきます。 まず、bzr-svnはsubvertpyというlibsvnのバインディングを利用していて、svn+ssh://プロトコルのハンドリングはlibsvnが行っています。 このため、bzr+ssh://ではPython製のSSHクライアントであるparamikoを利用している環境でも、svn+ssh://の場合はlibsvnがssh.exeやSVN_SSH環境変数に設定されたsshクライアントを起動しています。 私はputtyを利用しているので、SVN_SSH=plinkと設定してsvn+sshが利用できる環境を用意して問題が再現することを確認しました。 ログやトレースバックを追ってみたところ、あるファイルを構築する際に一時ファイルに書き

    Windowsでfopenを使ってはいけない!? : DSAS開発者の部屋
    Wacky
    Wacky 2010/03/05
    fcntl.h 内で定義されている O_NOINHERIT フラグを open() に渡す,fopen() の mode として、 "rbN" のように後ろに N をつける という方法でファイルハンドルを引き継がないようにファイルを開くことが出来る
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
    Wacky
    Wacky 2010/03/05