回答 (11件中の1件目) 追記 再帰のルールをよく理解してませんでした。 分かりやすい例として載せておきます。 [code]#include template struct print { print() { std::cout << N << std::endl; } }; template struct Print { Print() { Print(); print(); } }; template<> struct Print<0> { Print() {} ...
![ループ、再帰、gotoを使わずに1から100までを印字するC++プログラムは書けますか?](https://cdn-ak-scissors.b.st-hatena.com/image/square/7160d4babd4d555f02977d7dd74f94d47b2f7570/height=288;version=1;width=512/https%3A%2F%2Fqsf.cf2.quoracdn.net%2F-4-images.social_share_brand_logo.png-26-b6922c34f079ee95.png)
私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ
かつて、ゲームプログラミングはアセンブリが主流で、8bitのCPUは掛け算や割り算すらないものでした。割り算がないCPUっていつの時代だよ、っていう人たちもおりますが、ゲームボーイアドバンスに搭載されているARM7TDMIは除算の命令を持っていません。(故に除算を書くと死ぬほど遅いので、乗算で代用したりする) また、浮動小数に対する演算ユニットを持っていないハードウェアもあります。ニンテンドーDSに搭載されているARM946E-Sですら、浮動小数演算ユニットはありません。(CPUの機能としてはオプションで存在する)そのために固定小数点といった技術もあるわけですが、古くさい話です。 これらはCとC++の機能を駆使していかにパフォーマンスを出すかを余儀なくされた時代です。 さておき、最近はスマートフォンでのゲーム開発も進化しており、C++がiPhoneとAndroidの両方で動くということもあ
図 6 を見ると、ラムダ式で変数と値を取得する方法を、プログラマが完全に制御できることがわかります。しかし、これによって値を使用するという考え方は保持できますが、複雑なデータ構造を値として効率よく操作することには役に立ちません。 不変データ型 不足しているのは、一部の関数型プログラミング言語にあるような効率的な不変データ構造です。このような言語では、不変データ構造は共通データを共有するため、非常に大きくなった場合でも、効率性を高めることができます。データを共有するデータ構造を C++ で作成するのは簡単です。データを動的に割り当てるだけで、各データ構造がそのデータへのポインターを保持します。残念ながら、共有変数の有効期間を管理するのが難しくなります (ガベージ コレクターが普及したのはこのためです)。さいわい、C++ 11 には、std::shared_ptr テンプレート クラスで共有変
調べてみたら http://support.microsoft.com/kb/976656/ja のようだったので download して install して対応。 Address Space Layout Randomization (ASLR) の副作用っぽいですね。
ここではDXライブラリ使って実際にソフトを動かすところまでを解説します。 下記三つは無償提供されているので何も持っていない方でもOK VisualC++ 2008 Express Edition の方はこちら (XP,Vista の方におすすめ) VisualC++ 2005 Express Edition の方はこちら (セットアップが面倒だけど2008より動作が軽快) BorlandC++ Compiler 5.5 の方はこちら (2005よりも軽快だけどリッチなデバッガがありません) こちらはソフトを購入して所持していないと利用できません VisualStudio 2005 の方はこちら VisualC++ 2005 Express Edition の方はこちら VisualStudio .NET2003 の方はこちら(VisualC++ .NET2003 の方
Visual Studio 2010 は SKU (Editionの数) を整理することがこの間発表された。 これで困るのが、Visual C++ Standard Editionを使っていた人。ATL/MFCとx64コンパイラのサポートがExpress Editionにはなく、Visual Studio 2010 ではStandardがProfessionalに統合されて、$799もするようになる。趣味でフリーソフトやオープンソースソフトを作っている人には手を出しにくい価格だ。 x64はWindows SDKから入手可能なので、 Visual C++ 2010 Express Edition にATLサポートを入れてくれというフィードバックをしてみた。 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.asp
アメリカ時間の昼ごろにTwitter上が一つのニュースで埋め尽くされました。 PHPをC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。 原文 http://developers.facebook.com/news.php?blog=1&story=358 Facebookにおいて重要なことのひとつが動作の速さです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。 今日、私は2年に渡って作業して
いま私は速度的に特化したプログラムを書かなくてはいけない。1%でも速いほうが望ましい。必然的に言語はC/C++となる。しかし、いまさらC/C++なんか使いたくない。もう少し洗練された記法が使える言語が好ましい。 なければ作ればいいやと思い、丸一日かけてC++のparserをC#で書いた。 C++風言語の字句解析と構文解析は出来るようになった。(C++ templateは除く。) あとは、いかようにも文法を拡張できる。この言語を仮にいまYaneCと名付ける。YaneCはコンパイルするとC++のコードを生成する。 それでいま悩んでいるのがループ記法だ。C#のようなforeachが欲しい。最初、次のように書けるようにした。 foreach var x in vect sum += x;ふむ、C#っぽくていい感じだ。C/C++のdefineマクロでforeachみたいなのを作ると次のようなものにな
プログラミング言語の基本となる「C」。正しい文法や作法を身に付けよう。Cには確かに学ぶだけの価値がある(編集部) プログラミング言語Cは開発の仕事に役立つ人気のあるプログラミング言語です。 この連載では、Cでのソフトウェア開発をこれから始めようという方や、使った経験はあるが勉強し直したいという方のために、基本をきちんと押さえながら勉強できるような解説をしていきます。 なるべく正しい文法や作法を身に付けていただくためにJIS規格を基本に解説しますが、それだけにこだわらず実際の開発で役に立つことを分かりやすくお伝えしていきます。 Cの成り立ちと規格 まずは、Cの成り立ちと規格について知っておきましょう。ちょっと堅苦しい感じがするかもしれませんが、歴史を知っているとなぜこういう書き方をするのか、こういった機能があるのかといったことが分かります。また、規格を知っているとプログラミングをしていて何か
今日はバリバリC言語の話題です。C言語はバッファオーバーフローの問題が発生しやすく、初心者は使うな、とか、そもそも今時使うな、とか言われていますが、性能要求が高い場合や組み込みなど環境制限が厳しい場合などにはまだまだ大活躍です。さすがにWEBシステムの大規模なものなどで使うケースはほとんどないでしょうけれど。 そんなC言語も、一応バッファオーバーフローしにくいようなライブラリを使うようにいわれています。たとえば、sprintf(),vsprintf()などの代わりに、snprintf(),vsnprintf()を使うという感じです。'n'がつく方は、格納先のサイズを指定できるのでバッファオーバーフローを防ぎやすいのです。 ところが、あるシステムでこの部分でメモリーアクセス違反で死ぬ現象が発生しました。デバッガで確認すると、vsnprintf()で死んでます。格納先バッファのサイズなどは問題
VC++6.0から .NET以降のプロジェクト移行は、自動的におこなってくれるので特に問題はありません。 しかしコンパイラの仕様等が変わり、大量のワーニング(警告)やエラーが出ます。 ワーニングに関しては抑止指示をすれば何とか通りますが、エラーに関してはひとつづつ潰しかありません。 過去の古い言語仕様を引きずっているのもあり、本来の処理より独自のコントロール・ライブラリーの改造の方が大変かも知れません。(雑誌・ネット等から流用したものは、自分で再度仕組みを調べねばならない。) Windows 3.1時代に作成したコードも、今思えば下手なことをしていますが、問題無くVC++2008に移行できました。業務用のややこしい部分を再コーディングするには大変(時間もない)! ※Windows Vista以降は、VC++6.0がインストールできないので VirtualPCを利用する VC+
プロフィール 働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。 目次 ホーム 連絡をする RSS Blog 利用状況 投稿数 - 546 記事数 - 0 コメント - 1700 トラックバック - 記事分類 過去の記事 2013年03月 (1) 2012年10月 (1) 2012年09月 (4) 2012年01月 (2) 2011年12月 (1) 2011年11月 (1) 2011年10月 (5) 2011年07月 (5) 2011年06月 (4) 2011年05月 (4) 2011年04月 (6) 2011年02月 (4) 2011年01月 (3) 2010年11月 (3) 2010年03月 (1) 2010年01月 (4) 2009年1
以前、「scanf()のワーニング(Visual C++ 2005)」で書いたことなんですが、なんか微妙にヒット数があるみたいなので適当に書き直してみる。 偶には微妙にためになることも書いておかないとね・・・ 例えば次のような簡単なコードを書いてみたとします。 /****************************************************************************** * scanf_example.c *****************************************************************************/ #include <stdio.h> int main( void ) { int i; printf( "整数値を入力してください > " ); scanf( "%d", &i );
Project "Alchemy" is now the Flash C++ Compiler (FlasCC) FlasCC lets you bring existing C/C++ code to the web, with high performance, across browsers. Leverage the entire Flash Runtime API from C++, deliver full GPU accelerated graphics, and reach over a billion people with no install using C/C++. Learn more and start using FlasCC Adobe Labs: Home | Technologies | Download | Community | RSS Feeds
ボーランドが伝統あるTurboブランドの復活として、Turbo Delphi for Win32、Turbo Delphi for .NET、Turbo C++、そしてTurbo C#のTurbo Explorer版の無料提供を本日から始めました。ちゃんと日本語版も用意されています。 ダウンロード手順は以下の通り。 ボーランド デベロッパーツールズグループ、伝統あるTurboブランドの復活を発表 Turbo Explorer Downloads:Download your free copy of Turbo Explorer today! まずはTurbo Downloadsのページにアクセス。 ダウンロードしたいソフトウェアのリンクをまずはクリック 「New User」をクリック 必要事項を入力していきます。大体このスクリーンショットの通りで大丈夫です。「Register」をクリック
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く