Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記事書いてるときもロクに検索してないです。間違いとかあったらすみません。 疑問点とか有りましたら、自分で調べるか、あるいは僕に知らせてもらえると助かります。では、始めましょう。 [最終更新] 応用例にカスタムアロケータでの参照カウント管理を追加: 09/12/16 基本的な使い道 まず基本的なことについては、僕が説明するより、この動画を参照した方が速いでしょう: http://www.ustream.tv/recorded/2981654 それに対するついったーでの突っ込み: http://kiwofusi.sa
プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは Java や C++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp
Visual Studioには2005からDebugger Visualizersという機能がこっそり入っていて そのおかげでSTLコンテナの状態がデバッグウィンドウで見やすくなっています。 デフォルトでDebugger Visualizersが有効になっているので、 vectorをデバッグしてみると以下のようにデバッグウィンドウに表示されます。 Debugger Visualizersを無効にした場合は以下のように表示されます。 これを見れば、Debugger Visualizersのおかげでどれだけ見やすくなっているかがわかると思います。 なんだかよくわからない値ではなく、要素数と要素がはっきりわかるようになっています。 Debugger Visualizersは、コンパイラに同梱されたライブラリのみに適用されるだけでなく ユーザー定義のライブラリにも適用することができます。 Visu
VSTホストを作ろう! @hotwatermorningです。 この記事は、C++ Advent Calendar 2013の5日目の参加記事です。 はじめに 今回は、VSTiという種類のプラグインを読み込んで音を鳴らす、「VSTホスト」の作り方について紹介します。 VSTホストの画面を作るにあたり、「balor」というC++のWindows GUIライブラリを使用しました。balorについてはリンク先をご参照ください。 この記事の内容について、筆者がVST規格について勘違いしている点があるかもしれません。 ご了承ください。 VSTとは VSTとは簡単に言うと音楽製作ソフトのプラグイン周りの規格です。Wikipediaでは、以下のように解説されています。 Steinberg's Virtual Studio Technology(一般的にはVST)とは、ソフトウェア・シンセサイザーやエフェ
C++ではまる boost勉強会 2011/2/26 サイボウズ・ラボ 光成滋生 自己紹介 C++好き,Haskellいまいち gccとVCネタ http://homepage1.nifty.com/herumi/prog/gcc -and-vc.html / 212 C++は難しい 処理系依存とか ‣ "処理系のバグ"と騒いでも現実問題を解決しないと ‧ まあ,大抵は自分のバグだが boostも難しい ‣ コードを追いかけるのとかデバッグとか 自分や周囲ではまったことの中からいくつかピック アップしてみる ‣ 対象は主にgccやVC ‣ 易しいところから 3 / 21 Q. getRate(0) = ? printf("%f¥n", getRate(0)); // Infと表示された なぜ? double getRate(double speed) { const double lim
Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで
C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。 細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。 この内容は、正式に策定されるまでに変更される可能性があります。 コア言語 2進数リテラル 変数テンプレート 通常の関数の戻り値型を推論 ジェネリックラムダ 一般化されたラムダキャプチャ constexpr関数の制限緩和 どこからともなく現れる結果の規定(前半, 後半) [[deprecated]]属性 数値リテラルの桁区切り文字 サイズ付きのデアロケーション initializer-listによるaggregate初期化の制約緩和 ロックフリーの定義 シグナルハンドラでできることの制限緩和と明確化 ライブラリ make_unique() コンパイル時整数シーケンス tu
この記事は、インテル® ソフトウェア・ネットワークに掲載されている「32 OpenMP traps for C++ developers」 (http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/) の日本語参考訳です。 はじめに マルチコアシステムが急速な広がりをみせており、並列プログラミングへの早急な対応が求められています。しかしながら、経験豊富な多くの開発者にとってもこれは新しい分野です。既存のコンパイラーとコード・アナライザーでも、並列コードの開発中に一部の問題を発見することはできますが、多くの問題は検出できません。この記事では、OpenMP* を使用する並列プログラムが正しく動作しない原因となるさまざまな問題について説明します。 概要 並列プログラミングが登場したのはかなり以前のことです
配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)
前回の記事『プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ』でポインタの教え方を書きました。ソレに対して「そもそもどうしてポインタっていう仕組みがあるの?」という質問をもらったので、つらつらと書こうと思います。本稿は「ポインタがある理由の教え方」ではなく「ポインタがある理由」です。分かっている人には相当に退屈な文章ですのでそういう人は読まずにお帰りください。 で、えーと、結論だけ先に言うと省メモリ化のため、次に速度アップのため、そして生産性アップのためです。 1. メモリは有限である。 マシンに搭載されているメモリには限りがあります。メモリ空間は広大ですが、無限ではないのです。 好き放題にどんどんメモリを使ってデータを格納するわけにはいかないというわけです。しかしプログラムは計算のためにメモリ空間を占有します。仮に↓こんな感じに、わずかな有限メモ
以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい
On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > Gitのソースコードを始めてみた時、2つのことが頭にひっかかった。 > 1. C++じゃなくて純粋なC。理由は不明。移植性とか言わないでよ。 > クソだ。 クソまみれなのはオメーの方だ。 C++は悲惨な言語だ。しかも、少なからぬ数のプログラマーが使っていて、完全無欠のどうしようもないクソを生成するのがめちゃめちゃ簡単になっているという点で、よけいに悲惨だ。マジで、Cを選択する理由が「何もなかった」としてもだ、C++プログラマー避けになるというだけで、Cを使う大義名分になる。 つまりだ:Cの選択は唯一のまともな選択なんだよ。Miles Baderがふざけて、「いやがらせによる追い返し目的」なんていってたが、実際のところ正しい。俺の出した結論では、プロジェクトにCよりC++を使いたがるプログラマーは、む
昨晩ついったーでもつぶやいたのですが、 C++とfinally - 株式会社CFlatの明後日スタイルのブログ このブログ記事を読んだ感想は、C++にfinallyは特にいらないんじゃないかなー、でした。 1. リソース管理するならRAII使うほうがいいと思う 関数の実行時にどのような例外が発生しても、プログラムを正しく矛盾のない状態に保つことを例外安全といいます。 例外安全 - プログラミング言語 D (日本語訳) 例外処理 - Wikipedia Exceptional C++―47のクイズ形式によるプログラム問題と解法 (C++ in‐Depth Series) 作者: ハーブサッター,浜田光之,Harb Sutter,浜田真理出版社/メーカー: ピアソンエデュケーション発売日: 2000/11メディア: 単行本購入: 9人 クリック: 134回この商品を含むブログ (63件) を見
こんにちは、株式会社CFlatです。 あれほど何でも取り込むC++がC++11になってもいまだに採用しない言語仕様で、他の言語にはよく採用されているもの。 幾つかありますが、代表的なものがGC(ガベージコレクション)とfinallyブロックでしょう。 ただ今回は、GCについてはTechnical Reportに既に出ているようですし、Boehm GCというライブラリ(c.f. http://homepage2.nifty.com/aito/gc/gc.html)もありますので割愛します。ちょっとfinallyについて見ていきましょう。 finally文の使い方 finally文は、例えば以下のように使われます。 try { std::cout << "例外を投げるかもしれない処理" << std::endl ; return ; } catch (...) { std::cout << "
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く