読者です 読者をやめる 読者になる 読者になる

Gobble up pudding

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

MENU

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++でのマルチスレッドの扱い等を勉強したくて書きました。 全面的に下記サイト…

Visual C++でのDLLの一般的な作成方法(暗黙的リンク)

2016年02月07日更新 https://msdn.microsoft.com/library/81h27t8c(v=vs.110).aspx によるとメンバーに対してdllexportはだめらしいので追記。 また、main側サンプルコードが中途半端だったので、C++03以前で書きました。古い環境で開発せざるを得ないことも…

WIN32APIだけでノベルゲームエンジン

WIN32APIとC言語だけでここまでのものが作れるなんてってことで、今回はプログラムの紹介記事です。 なにかとここのプログラムでゲームプログラミングを勉強させていただいています。 WindowsでのめんどくさいVC++でのDLLの作成もしていますので、勉強になる…

STL入門 第5回 ~map編~

今日はmapです。巷ではdictionaryとか言ったり、連想配列とか言われてるあれです。巷ってどこだー。くしゃみが止まりません(;´・ω・)過去のSTLの記事はこちら↓STL入門 第1回 ~algorithm編~ - Gobble up puddingSTL入門 第2回 ~vector編~ - Gobble up puddi…

STL入門 第4回 ~list編~ 2

過去のSTLの記事はこちら↓STL入門 第1回 ~algorithm編~ - Gobble up puddingSTL入門 第2回 ~vector編~ - Gobble up puddingSTL入門 第3回 ~list編~ - Gobble up puddingJavaScriptを勉強してる私です。しかしCSSがちょっとわかってないことに気付いた…

第4回 生成に関するパターン Prototype

Design Patterns 第4回 生成に関するパターン Prototype 前回のリンク 第1回 生成に関するパターン Builder - Gobble up pudding第2回 生成に関するパターン Factory - Gobble up pudding第3回 生成に関するパターン Abstract Factory - Gobble up pudding …

第3回 生成に関するパターン Abstract Factory

Design Patterns 第3回 生成に関するパターン Abstract Factory 前回のリンク 第1回 生成に関するパターン Builder - Gobble up pudding第2回 生成に関するパターン Factory - Gobble up pudding 生成に関するパターン Abstract Factory Abstract Factoryパ…

第2回 生成に関するパターン Factory

Design Patterns 第2回 生成に関するパターン Factory 前回のリンク 第1回 生成に関するパターン Builder - Gobble up pudding 生成に関するパターン Factory 単一の派生クラス群からインスタンスを生成するユーティリティクラス ファクトリーデザインパター…

第1回 生成に関するパターン Builder

Design Patterns 第1回 生成に関するパターン Builderデザインパターンの本を買いましたが、 コードが断片化して書かれているためか理解できず……。 そんなとき、海外のサイトでいいサンプルを見つけたので、 翻訳して、ソースコードをちょっと変えて載せてお…

C++の名前空間と前方宣言について

最初にざっくり説明すると、C++の名前空間はC#にある名前空間と同じ概念です。Javaでいうとpackageに近い概念です。 前方宣言(forward declaration)はC++特有のものだとおもわれます。 前方宣言について あるクラスで包含(コンポジション: Composition)をし…

STL入門 第3回 ~list編~

過去のSTLの記事はこちら↓STL入門 第1回 ~algorithm編~ - Gobble up puddingSTL入門 第2回 ~vector編~ - Gobble up pudding入門記事というよりただの自分の勉強記録になり下がってるのは仕様です。listはSTLコンテナでvectorに似ています。シーケンシャ…

STL入門 第2回 ~vector編~

第1回目はこちら↓STL入門 第1回 ~algorithm編~ - Gobble up puddingってかこっちのほうが第1回っぽいのは気にしないでください。STLにはコンテナというテンプレートクラスでできているオブジェクトの入れ物があります。 大きく分けて、シーケンスコンテナ(…

プログラムからBitmap画像を扱う(VC++) 1回目

今回使う画像です。使う画像は背景をキャプチャして切り取ってビットマップ(Bitmap)として保存したものです。ここからDLしたものを使わせていただきました。 デスクトップの背景 - Microsoft Windows 何回かに分けてビットマップ画像を扱う特集をやろうと思…

TopCoderはじめてみました SRM516 Div2 Easy NetworkXZeroOne

TopCoderっていう競技プログラミング的なものがあるんですが、 僕はアルゴリズムってか考える力が少し弱いと思ったので、気が向いたら今後もやろうと思います。 競技プログラミングと聞くとすごい敷居が高いように感じられますが(もちろん上級向けの問題は…

C++11が便利すぎる 正規表現 ~regex編~

C++11になってから複雑怪奇さをより増した一方で、 実はめちゃくちゃ使いやすく便利になっていることに最近気づき始めました。 ここで紹介するコードはC++11に対応しているものでないと実行できません。 Visual Studioだと2013以降です。 g++だと -std=c++11…

C/C++で行数を数えるときの注意とwcコマンド

C/C++を使っているとファイルを読んで、メモリ上にデータを格納したいときに メモリをどのくらい確保する必要があるか調べるのに行数を数えることが多いかと思います。 だいたいは以下の様なコードを書かれたことが多いのではないのでしょうか? 私はよほど…

STL入門 第1回 ~algorithm編~

C++使うなら最低限STLくらいは知らないといけないだろうということで勉強中です。 STLくらいっていうけど結構ここから険しい道の入口なんですけどね…。 他の言語に比べて気持ち悪いシンタックスが増えるし、 どういうわけか覚えにくい……なんでだろ。 そんな…

C++でファイル読込み パターン別まとめ

C++

C++でのファイルの読み込み方法のまとめです。 よく使われるCでもできる方法以外の 標準C++ライブラリを使ったファイル読込み方法です。 Visual C++ 2013とg++で確認しました 4パターン用意しました。 1. char *型に一行ずつ読込む 2. string型に一行ずつ読…

Direct2DとWindows Imaging Component(WIC)で透過PNGを表示

Direct2Dを使ってPNG画像を表示するいい方法はないか模索していたところ、 Windows Imaging Component(WIC)というのを見つけましたが、しばらくこれどうやって使うの? 状態が続いており、いろんなサイトを読んでみるも挫折…… と思ったところ神!!!といえ…

デフォルトで用意されているプロジェクトのコード修正 Visual Studio

Win32 プロジェクトのInitInstance内のインデントがおかしい……。 どのバージョンで同様のことがおこっているかわかりませんが Visual Studio 2013では 新規作成でのウィザードからWin32 プロジェクトを作ると自動で作られるひな形の BOOL InitInstance(HINST…

MSXML 6.0を使ってみた。

Microsoft謹製のMSXML 6.0っていうXMLパーサを使ってみましたよ。 っていうかこれマジモンのCOMじゃないすか。かかわりたくない。COM…。 BSTRとかVARIANTとか出てくるのでびみょーな感じです。回避方法あるのかもしれないですが。調べようと思ったけど英語の…