Gobble up pudding

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

MENU

C++

C++でオブジェクトを返す関数を書いてもいいのか問題

C++でオブジェクトを返す関数を書いてもいいのか問題→OKです。 遅かったらプロファイル取りましょうで終わりです。 かなり過去にC++でstd::stringをどう返すべきかという記事を書いたこともあり結局いま、例えば、関数内でvectorを加工してその結果を呼び出…

フィボナッチ数列でメモ化

なんとなくC++をちょろっと書いてみたくなったので書いてみました。 いや、ほぼC言語だけど…。 それよりもWandboxがC++2aとかになってて…えぇ…C++11からかなりバージョン上がってるなぁ…という印象です。 #include <iostream> #include <cstdlib> #include <stdexcept> #define CHECK(e) do</stdexcept></cstdlib></iostream>…

C++でカレンダー

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

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

単方向リストを勉強がてら久々にビールを飲みながらC++で書いてみました。 これをやると、ポインタって何かってよく理解できますね。 しかしビールを飲むと、わけのわからないミスをしでかします…。 ソースコード #include <iostream> #include <exception> namespace My { templa</exception></iostream>…

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++によるソースコードを公開しています。 ソースコード ソースの中身の詳細については 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のサンプルとチュートリアルを見ながら、サンプルを改変してコードを書きました。 以前作成したアナログ時計 今回作成したアナログ時計(ポップアップウィンドウ使用) ずいぶんゴージャスにな…

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

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

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

Part1はこれ ものすごくありがたい情報をいただきました。 RVOについて(NRVOというのもある) これを無効化するオプションがありますよとのこと。 id:yohhoyさんのアドバイスが gccであれば-fno-elide-constructorsオプションを指定すると、 RVOが無効化さ…

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

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

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

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

双方向リストの実装

やっぱりアルゴリズムとデータ構造の知識って重要だよねってことで プログラミングの基礎を勉強しなおしてます。 C言語で単方向リストの実装 - Gobble up pudding この続きです。 この実装もArrayDequeやLinkedListが備えているメソッドを実装しきれてません…

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

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

スタック上に確保するクラスのインスタンス化のやり方について

スタック上に確保するクラスのインスタンス化の場合()丸カッコ有の場合エラーになるのはなんでなの?という話。 C++でRAII(Resource Acquisition Is Initialization)とかしようとしたときに スタック上にクラスをインスタンス化することがあって { HogeClass…