Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

C++

C++でカレンダー

カレンダーなんてJavaScriptを使ったらすでにたくさん便利なのがありますが、 自分でカレンダーを書いたらどうなるか…とおもい書いてみました。C++で。 そういえばツェラーの公式というのがありましたが、使ってません。 使ってみました。 C++はここ数か月書…

単方向リスト(Singly Linked List)の実装 (C++)

単方向リストを勉強がてら久々にビールを飲みながらC++で書いてみました。 これをやると、ポインタって何かってよく理解できますね。 しかしビールを飲むと、わけのわからないミスをしでかします…。 ソースコード イテレーターがねえ!とか 追加するたびnew…

C++のmapとJavaのmapの挙動が違う件

C++でmapを書いててinsertしまくってましたが、 あれれ?Javaと挙動が違うということに気付きました。 mapでinsertするとC++ではキーが重複したときに、 insertされず、valueが上書きされない。 一方、Javaのほうはputしたときに 最後にputしたものでvalueが…

わかりにくい関数ポインタを返す関数

関数ポインタって変な文法ですよねってお話です。 もちろんポインタの文法もいろいろツッコミどころはあるのですが (このせいでポインタよくわからんな人が続出)。 例えば次の宣言はぱっと見すぐにわかる人はC言語マスターです。 void (*func(const char *…

Visual C++でデバッグ時の出力をIDE(Visual Studio)上に出す方法

Visual Studioの出力ウィンドウまたはイミディエイトウィンドウに なにか文字列を出力したい時は コンソールアプリケーション、Windowsアプリケーションに 関わらず、OutputDebugString()を使うとそれが実現できます。 使い方はputs()と同様です。改行はつけ…

スマートポインタ(shared_ptr)を使ってみる C++11

C++

スマポだよ!スマポ!ナマポまだ使ってんの?ぷぷぷ(๑˃̵ᴗ˂̵)و 大半の用途でスマポに置換えるべきだと最近思います。 布教もかねて、C++ってアレだよね?レガシーなあれだよね? と思われている方もいると思いますが……誤解です。 確かにC++03までだと古臭い言…

STL入門 第6回 ~list編~ 3

久々にC++ STL入門の記事を再び書きます。 いやぁ、実はすごく良いサイトを見つけたので、 そこのリンクを貼るがために 自分用にブログにリンクをペタリとしたかっただけなので そのついでに記事を書いてしまいました。std::listです。 他の言語と違ってこの…

競技プログラミング メモ

まだまだ競技プログラミングは初心者です(´・ω・`)。 とりあえずテンプレがあったほうがいいのでテンプレをメモります。 すごいのになるとマクロの嵐ですよね…あれはすごい。 とりあえずテンプレ using namespace std; namespace patch { const int Failed =…

アプリケーションにアイコンを追加する方法

C++

アプリケーションにアイコンを追加する方法です。 追加方法は言語によって異なりますが、C++での説明をします。 アイコン用の画像はICO形式(拡張子 .ico)でなくてはいけません。 一番お手軽なのはPNG形式のファイルなどから変換してやる方法です。 C#の場合…

グローバルフックを使ってみた

グローバルフック(またはシステムフック)を使ってWindows APIで遊んでみました。 フックというのは 引用元: wikipedia 主に元のプログラムに対する機能追加・拡張やカスタマイズの手段として使われるほか、デバッグのための情報収集にも有効である。このよう…

近代汎用術式Boost C++ 1.57.0をVisual Studio 2013で使う ~導入と使い方~

まだ多重継承でダイヤモンドの錬成をしていない僕ですが、 ついに近代汎用術式に手を出すことにしました。 現時点で最新版のBoost C++ 1.57.0をVisual Studio 2013で使うためのメモです。 汎用術式でありながら暗黒術式ではあるのですが、導入と使うのは割と…

DXライブラリとC++でRPGのゲーム作ったの公開します

DXライブラリとC++によるソースコードを公開しています。 ソースを見ると処理がわかるように コメントを充実させています。 ソースコード fa11enprince/DxRpg fa11enprince/DxRpg · GitHub ソースの中身の詳細については Github上のReadMe.mdを参照してくだ…

クラス内のオブジェクト(クラス・構造体)を関数で返したもののpublicメンバに対して代入を行う

なんともややこしい表現ですがこういうことです。 もう一度タイトルですが、 クラス内のオブジェクト(クラス・構造体)を関数で 返したもののpublicメンバに対して代入を行う な… 何を言ってるのか わからねーと思うが おれも何を言っているのかわからなかっ…

クラスのメンバ変数の引数付きのコンストラクタの呼び出し方のメモ

C++

あんまり使わないのでどうやってやるんだっけなメモ。 おまけでスマポ(スマートポインタ)についてもさらっと書いてみました。 クラスのメンバ変数の引数付きのコンストラクタの呼び出し方 メンバイニシャライザ(メンバ初期化子)を使うことで解決 #include <iostream></iostream>…

誰得??配列の範囲外アクセスが起きないぐるぐる回る配列を作りました。

C++

C++で演算子のオーバーロードを使ってたとえばa[5]の配列で a[6]とかやると、a[0]を指すようにする謎配列を作りました。 PythonとかPerlの配列に似てるような感じのものですね。単にオーバーロードの練習をしたかっただけという…… ソースコード #include <iostream> #i</iostream>…

C++11から導入された乱数、randomの使い方

C++

C言語のrand()関数はたとえシードを変えても精度がわるく、 規則性がある程度出てしまうというような話を聞いたことがあると思います。 このあたりの話になるとかなり難しい分野(少なくとも僕にとっては)なので、 リンク先に説明は譲ることとします。 C言…

std::function, std::bindは便利

C++でstd::function, std::bindを使ってみました。あんまりJavaScriptは詳しくないですが、 例えばJavaScriptではこんなことができます。 <html> <head> <script type="text/javascript"> </head></html>

C/C++で配列の長さの求め方

C++ C

C/C++で配列の長さの求め方です。 超基本中の基本なのですが、しばらくC/C++の配列を使っていないと アレレってことになってしまいます。 今日はそれでハマりました。 sizeofを使って配列の長さ(要素数)を求めたはずが、 なんでか落ちる…バッファオーバー…

ぷよぷよの問題(人材募集企画 2011年版 問題2)をC++解いてみました。

だいぶ前の問題なのですが、たまたま記事を見かけたので 書いてみました。 簡単に問題を説明すると、 あるぷよぷよの入力が与えられていてそれが19連鎖するそうです。 その連鎖の様子を出力しなさいという問題です。2時間以上かかると採用は難しいでしょうと…

C++ オペレーターオーバーロード(演算子の多重定義) まとめ

C++で演算子の多重定義は使用頻度がそんなに多くはないものですが、 いざ書く時、あれれ、戻り値は参照にしていいの?とか 引数はconstつけるべきなの?参照渡しでいいの?とか いろいろ悩んでしまってもうこの際丸暗記してしまおう! っていうような作戦に…

Direct2D + WIC + Windows APIでアナログ時計

Direct2D + WIC + Windows APIでアナログ時計を作りました。 MSDNのサンプルとチュートリアルを見ながら、サンプルを改変してコードを書きました。 2014/11/20 更新 unordered_map使用時のバグ修正(実はmapのままでもまずい部分があったけど……)。 あとは無駄…

C++でstd::stringをどう返すべきか Part3

もはやタイトルから脱線しかかってきました。 C++11がらみのお話です。ただしRVO/NRVOはC++03でも使える…というか コンパイラ依存です。 とはいってもよほどマイナーかとても古いものを使っていなければ サポートされているというところでしょうか。 少なく…

C++でstd::stringをどう返すべきか Part2

id:yohhoyさんから情報をいただいてPart2を書きます。 Part1はこれC++でstd::stringをどう返すべきか Part1 - Gobble up puddingものすごくありがたい情報をいただきました。 RVOについて(NRVOというのもある) これを無効化するオプションがありますよとの…

C++でstd::stringをどう返すべきか Part1

C++では関数からstd::stringを皆はどうやって返してんだろうっていう疑問がわきました。 フツーに考えてstd::stringをそのまま値で返す一択なのですが、 そこで問題になるのがコピーコスト…… っていうかそもそもコピーしてるの?とかいろいろ疑問が沸くわけ…

C++らしい入出力、数値・文字列相互変換まとめ

まとめるつもりはなかったのですが、 たまたま目にとまったメールで問題が書いてあって おお、なんかサンプルを書くには良さそうと思い、 CodeZineのメールマガジンに書いてあったサンプルを利用させていただきます。 よくあるTopCoderのようなあのレベルの…

双方向リストの実装

やっぱりアルゴリズムとデータ構造の知識って重要だよねってことで プログラミングの基礎を勉強しなおしてます。 以前C言語でものすごく中途半端な単方向リストの実装を書きました。C言語で片方向リストの実装 - Gobble up puddingC言語で片方向リストの実装…

Visual Studio (VC++)でフィルタ?(フォルダ?)が消えた!!時の対処法

実をいうと、何も消えていなくて、単に表示のされ方の問題です。『ゲームプログラマになる前に覚えておきたい技術』という本付属のソースコードをVisual Studio 2013用に再コンパイルして、ソースを眺めていたら、あれれ?フォルダ構成と同じようにソースが…

スタック上に確保するクラスのインスタンス化の場合()丸カッコ有の場合エラーになるのはなんでなの?

C++でRAII(Resource Acquisition Is Initialization)とかしようとしたときに スタック上にクラスをインスタンス化することがあって { HogeClass hogeClass; hoge(); fuga(); } // ここで自動的にデストラクト とかやってかと思うんですけど、 他にも、 例が…

string型にファイルを一気読みできるstreambuf_iteratorのおおまかな仕組み

以前の記事の C++でファイル読込み パターン別まとめ - Gobble up pudding で最後に書いた例のstreambuf_iteratorの仕組みですが、 おおまかにどうなっているのかわかりました! C++標準ライブラリのiteratorを継承して、 内部でファイルポインタを扱ってい…

Windows APIとC++でテトリス

Windows APIとC++でテトリス作りました。 GDIでも結構いろいろ作れますね。 テトリスのブロックに画像ファイルは使っていません。 プログラムにBitmapとして描画させています。 C++でのマルチスレッドの扱い等を勉強したくて書きました。 全面的に下記サイト…