タグ

C++に関するt10471のブックマーク (36)

  • extern "C" - debian36の日記

    前回は、C++ソースで定義された関数を Cソース内でコールする場合に起こる問題について書きました。 そのキーワードが、「マングリング」でした。 前回:http://d.hatena.ne.jp/debian36/20080226 では、その問題を回避する方法、すなわちマングリングを避ける方法について、今日は記します。 ずばり、その答えが、extern "C"  です。 この修飾子を見たことがあるかたも多いのではないでしょうか。 自分も、人のコードを見ていていると、たまに extern "C"{ .... .... } なんてコードが登場して、「ん〜、これは、C言語として解釈しろ」ってことなのかなぁってなんとなく思っていた程度でした。 確かに、extern "C" は、C言語として解釈して下さいよって、コンパイラ(g++)にお願いするものなのですが、なんのために、そのようなお願いをするのかと

    extern "C" - debian36の日記
    t10471
    t10471 2016/03/02
  • マングリング - debian36の日記

    今日の午後は、ずっとC++(g++)と闘っていました。。。 これまで C言語でコーディングされていたシステムの一部が、C++に変更されたたため、自分が担当する部分もそれに対応する必要がありました。 ※ プロジェクト進行中に言語変更なんて自由やなぁ・・・(^^; そんなん、簡単やろ〜、 C++って、C言語から派生したものやろ? C++って、C上位互換やろ? どうせ、バイトコードになっちゃえば C も C++ もいっしょやろ? 的に、思っていたのですが、問題の解決に午後丸々かかっちゃいました・・・ なんか身体的に疲れちゃいました。 組み込みなどの一部分野では、じわじわとC言語からC++言語への移行がはじまっている(? : 未確認情報)ので、 CとC++が混在するシステム(CとC++で1つの実行体)を作るケースがあるかもしれません。 そんな場合に役立つかも、ということで、今日学んだことをまとめま

    マングリング - debian36の日記
    t10471
    t10471 2016/03/02
  • C++: 構造体を格納したSTLコンテナに対してソート・探索・削除などのアルゴリズムを適用する

    C++に慣れている人にとっては当たり前のことかもしれないけど、あまりC++に親しんでいない場合、構造体を格納したSTLコンテナに対してアルゴリズム<algorithm>を有効に活用していないかもしれない。そこで、構造体を格納したvectorなどのSTLコンテナでソートや探索、削除などのアルゴリズムの利用方法を書いておく。 struct A { int n; int* p; }; 上記のような構造体はよく見かける形だと思う。構造体Aに整数型変数のnとポインタ型変数のpがあり、例えばnに配列の要素数、pにその配列を確保したりする。こういった構造体を以下のようにvectorなどのSTLコンテナを使って格納することは多々ある。 vector<A> A_list; これで構造体Aをコンテナに格納できるわけだ。ところで、STLコンテナを使用する一つの理由として便利なアルゴリズムが利用できることが挙げら

    t10471
    t10471 2015/07/12
  • C++ マルチスレッドプログラミング

    Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。Read less

    C++ マルチスレッドプログラミング
    t10471
    t10471 2015/01/11
  • 【おすすめスライド】「ゲーム開発者のための C++11/C++14」 - コガネブログ

    関連記事

    【おすすめスライド】「ゲーム開発者のための C++11/C++14」 - コガネブログ
    t10471
    t10471 2015/01/11
  • メモリモデル?なにそれ?おいしいの? - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2014の21日目にエントリしています。 内容はC++メモリモデルと逐次一貫性についての概説記事となっています。 flickr / nomadic_lass もくじ 忙しい人のための「C++メモリモデル」 C++メモリモデル一問一答 ソフトウェアからみた「C++メモリモデル」 “メモリ”という共有リソース C++ソースコードが実行されるまで メモリの一貫性と整合性 逐次一貫性モデル is Easy ハードウェアからみた「C++メモリモデル」 ハードウェア・メモリ一貫性モデル C++コンパイラの責任と自由 強いメモリモデル vs. 弱いメモリモデル 逐次一貫性モデル is Hard (文のみ約9600字) まえがき When your hammer is C++, everything begins to look like a thumb

    メモリモデル?なにそれ?おいしいの? - yohhoyの日記(別館)
    t10471
    t10471 2015/01/06
  • ソフトウエア研究会in秋葉原

    CHAPTER-1 moveの活用 † moveの活用による恩恵は計り知れません。 とくに、速度とメモリ効率、そしてデバッグ効率を重視するゲームプログラミングにおいて、 moveセマンティクスの導入は大きな効果がありました。 なお、moveに関して十分な知識のある方ば、Chapter-1は読み飛ばしてください。 ↑ 1-1 moveのおさらい † moveを使う前に、右辺値参照について知っておく必要があります。 このプログラムを見てください。 string a = "1"; string b = "2"; string c = a + b; // ~~~~~ // 右辺値 この"a + b"の部分が右辺値です。 右辺値とは、名前のない一時的に生成されるオブジェクトのことです。 この場合、string型で値が"12"の一時オブジェクトが生成されます。 わかりやすくC++03の書式で置き換える

    t10471
    t10471 2015/01/06
  • glm - グラフィックスプログラミングのためのC++数学系ライブラリー - Qiita

    glm とは何か? ここで紹介する glm は C++ の座標系ベクターの取り扱いを中心とした数学系のライブラリーです。基的には3DCG向けの、特にOpenGLとの親和性の高いグラフィックス用途のライブラリーですが、その機能はよく整理されて実装されており、比較的低次のベクター処理に汎用に扱えるものとなっています。 今回は C++ Advent Calendar 2014 への参加記事として、 glm について簡単にその凡その機能について紹介したいと思います。 glm の公式情報と入手、ライセンスについて glm の公式ウェブサイトはこちら: http://www.g-truc.net/ - Christophe Riccio による OpenGL 情報ウェブサイト "g-truc" http://glm.g-truc.net/ - g-truc の主要コンテントとなった glm の公式ウ

    glm - グラフィックスプログラミングのためのC++数学系ライブラリー - Qiita
    t10471
    t10471 2015/01/06
  • Veiler.Lampads - constexpr-Lambda Library - Qiita

    この記事はC++ Advent Calendar 2014の20日目の記事です.AdCのリンクは記事の下にあります. I(@wx257osn2)です1.去年は残念な感じだったので今年こそはちゃんとした記事を書きたかったのですが,今年も間に合いませんでした…2.ところで去年の記事を見返してみて気付いたのですが,去年も20日担当だったんですね.来年も20日にしようかしら3. tl;dr C++11 constexprな無名関数ライブラリを作ったのでリファレンスと実装解説を行います. 鳥小屋 is 便利 はじめに 当記事は2014年の暮れにも関わらずC++11の内容を記事にしています.新規格が出た年にもう3年も前の規格を記事にするのは些か憚られるのですが,GCCが「C++14 constexpr support」と発表した後1ヶ月に渡ってHEADがまともにconstexprをコンパイルできなくな

    Veiler.Lampads - constexpr-Lambda Library - Qiita
    t10471
    t10471 2015/01/06
  • Boost.odeintの紹介 - Qiita

    この記事は C++ Advent Calendar 2014 18日目の記事です。色々とネタに迷った結果、まだ日語の解説記事が全然ないodeintを紹介することにします。(なぜこれほど日語での解説が少ないのか。。) Boost.Odeintとは 皆さんご存知Boostライブラリの1つで、常微分方程式を解くために使います。簡単にいうと という形をした方程式に対して使います。$x$は$t$に依存する変数、つまり$x=x(t)$ですね。これを解くアルゴリズムにはRunge-Kutta法(RK)やその改良版などがあります。Boost.OdeintはこのRK法を実装しています。GPGPUやMPI, OpenMPを利用した並列計算にも対応していますが、今回はそこまで説明しません。 いちばん簡単な方法 数値計算法に馴染みがない人も読むかもしれないので、上記の方程式を解くいちばん簡単な考え方を紹介しま

    Boost.odeintの紹介 - Qiita
    t10471
    t10471 2015/01/06
  • Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件

    « Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 | Main | golang のリファクタリングには gofmt ではなく、gorename を使おう。 » golang には go build というビルド機能があり、C言語と golang をまぜた cgo というC言語拡張も同じコマンドでビルド出来ます。 その際、ソースコードのコメントに CFLAGS や LDFLAGS を自ら指定する事が出来るので package gtk // #include "gtk.go.h" // #cgo pkg-config: gtk+-2.0 import "C" import ( "fmt" "log" "reflect" "runtime" "strings" "unsafe" "github.com/mattn/g

    Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件
  • 今年気になった C++ ライブラリとかフレームワークを紹介する記事 - はやくプログラムになりたい

    この記事は C++ Advent Calendar 2014 の17日目の記事です.前日は @yutopp さんの Boost.Spirit.X3のご紹介 - C++ Advent Calendar 2014(16日目) でした. 最近 Boost.Spirit と LLVM で言語をちまちまと書いているので,Boost.Spirit と LLVM で言語つくるチュートリアルみたいなのを書こうと思ったのですが,チュートリアル用の言語の設計をあれこれ考えているうちに時間が経ってしまいました…ぼちぼち考えているので,別の機会に書きます. というわけで,今回は年の暮れということもあり,今年 GitHubC++ Trending repositories で見た,気になるライブラリやフレームワーク7つについて紹介しようと思います. 紹介するライブラリやフレームワーク cppformat :

    今年気になった C++ ライブラリとかフレームワークを紹介する記事 - はやくプログラムになりたい
    t10471
    t10471 2014/12/18
  • 線形代数ライブラリの速度比較 - .Regenschauer 雑記帳

    C++ Advent Calender 2014 13日目の記事です. 最初はマイペースに作成している自作ライブラリ内で使用しているメタプログラミングに関する技術の解説を行おうと考えていましたが、この分野は他に詳しい方々が詳細なスライドや記事を作成してくださっているのと、時間の都合等々で断念しました.代わりに、Advent Calender 3日目の5mingame2さんの紹介にもあったEigenやboost.ublasといった線形代数ライブラリのコンテナ毎の速度比較結果をまとめます. はじめに vectorやmatrixを利用した線形代数の処理を行いたい場合、内積や行列の積といった基的な処理は自分で容易に記述することができますが、LU分解やSVD等の自分で実装するのは少し気が引ける処理を利用したい際に、どこかに良い線形代数ライブラリが無いかな~と探すことと思います.この時、C++が好き

    線形代数ライブラリの速度比較 - .Regenschauer 雑記帳
    t10471
    t10471 2014/12/15
  • unique_ptr で今風な C++ コードを書こう!! - @nojima's blog

    はじめに お久しぶりです。KMC OB の id:nojima です。 この記事は KMC Advent Calendar 2014 の10日目の記事です。 昨日は id:murata さんの「受験生応援!Javascriptでひねくれ数列」 でした。 今日は C++ の unique_ptr の話です。 (最初は rvalue について書こうと思っていたのですが、書いてみると unique_ptr だらけになったのでタイトルを変えました。なので、KMC Advent Calendar 2014 に書いてあるタイトルとはい違っています。すみません) 個人的には C++03 ではなく C++11 を使う最大の理由は unique_ptr の存在だと思っています。 例外発生時にももれなく delete してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として

    unique_ptr で今風な C++ コードを書こう!! - @nojima's blog
    t10471
    t10471 2014/12/13
  • サルでき.jp

    サルでき.jpは閉鎖しました。 今まで沢山の方々にお越しいただき当にありがとうございました。 新しいサイト「サルでき.com」はこちらです。 また皆様とお会い出来るのを楽しみにしております。 サルでき.jp管理人 カワサキタカシ

    t10471
    t10471 2014/12/13
  • リンク時に関連するルールの話 - ここは匣

    C++ Advent Calender 2014(http://qiita.com/advent-calendar/2014/cpp) 11日目の記事です. はじめに 今年はこれまでコンパイル時の話について沢山記事にしてきたので,たまにはリンク時に関連することを記事にしてみようと思います.把握している人にとっては当たり前の内容ですが,日語情報としてまとまっている記事は案外少ない気がするので初学者等に少しでもお役に立てば幸いです. この記事を執筆するにあたっては最新のWorking draftであるN4140(https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf)を参考にしています.記事の内容は主に,3 Basic concepts内の3.1 Declarations and definitions,3.2 One

    リンク時に関連するルールの話 - ここは匣
    t10471
    t10471 2014/12/11
  • C++でPythonを拡張するためのBoost.NumPyチュートリアル(実践編) - Qiita

    C++ Advent Calender 10日目の記事です。 Boost 1.63でBoost.NumPyがBoost.Pythonにマージされます。 それに伴い以下の記述では不具合があるかもしれません。修正記事を書く予定です。 動機 Pythonまじ便利です。 シミュレーションとその結果の解析がメインとなるアカデミア(見習い)である私には、 対話的にデータの加工、解析、可視化がシームレスに実行できるIPython Notebookは必須です。 残念ならがC++だけで同等の機能を提供してくれる環境はありません(たぶん)。 CERNが作ってるROOTのclingはC++を対話的に実行できるそうですが情報が少なくて使ったことありません。 だれかC++で文芸的プログラミングできるIC++ Notebook作ってください(切実)。 しかしながらシミュレーション自体は数日から数週間実行するもので、

    C++でPythonを拡張するためのBoost.NumPyチュートリアル(実践編) - Qiita
  • 引数1個のコンストラクタの暗黙呼び出しとexplicit

    #include <iostream> using namespace std; class C { protected: int x; public: C(int arg) : x(arg) { cout << "C::C(int)" << endl; } C& operator=(int arg) { cout << "C::operator=(int)" << endl; x = arg; return *this; } }; int main(void) { C obj = 10; return 0; } 引数をひとつだけとるコンストラクタのことを,“変換コンストラクタ(converting constructor)”と呼ぶ. 引数をひとつだけとるコンストラクタについては,明示的呼び出しと暗黙的呼び出しの2つの呼び出し方がある. たとえば,クラスCに1個の引数をとるコンストラクタC

    t10471
    t10471 2014/12/10
  • optionalをC++03で実装してみる - Qiita

    これは C++ Advent Calendar 2014 9日目の記事である。 初めに 「C++03でoptionalを作れるか?」Boost.Spiritを読みながら構文解析ライブラリを自作しようとしてこの問にぶち当たった。できるはずである。なぜならBoost.SpiritはBoost.Optionalを利用しているからだ。Boost.Optionalは他の多くのBoostライブラリと同じくC++03に対応したほとんどの主要なコンパイラで利用することができる。しかし話はそう簡単ではなかった。 変なところや分かりにくいところがあったら指摘をお願いします。 optionalについて optionalについて知らない人のために簡単に紹介する。 optionalは簡潔に言うと「オブジェクトが有効か無効かのフラグを付加するオブジェクトのラッパー」である。Haskellを触ったことのある人ならば、C

    optionalをC++03で実装してみる - Qiita
    t10471
    t10471 2014/12/10
  • イテレータ破壊の問題 - Qiita

    これはC++アドベントカレンダー2014の8日目の記事です。 ゲームの修羅場10に投稿した記事で「プログラムの落ちるポイント」の中で 4つほどポイントを紹介したのですが、その中の一つがイテレータ破壊です。 これは、ややこしいので、の方では軽く触れるだけで終わったのですが、 今回、あたらめて紹介したいと思います。 vectorやmapというコンテナを使う機会は多いのですが、 知らず知らずのうちに破壊されたイテレータを使っていることがあります。 まずイテレータ破壊について簡単に書きます。 void foo(){ std::vector<int> a = {1, 2, 3, 4, 5}; auto it1 = a.begin(); a.push_back(6); std::cout << *it1 << std::endl; } こういうソースがイテレータ破壊の例となります。 vectorの場

    イテレータ破壊の問題 - Qiita
    t10471
    t10471 2014/12/09