涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

C++

std::queueの全要素削除

C++

なんでSTLのstd::queueにはclear()メソッドがないんだ?std::dequeにはあるのに。Webで探しても方法が見つからなかったので、とりあえず以下のように対処。 while (!m_Queue.empty()) m_Queue.pop(); 最近ガッツリと記事を書いてきたので、一言プログラミン…

usingディレクティブをファイルスコープで使わないでほしい

C++

言語の入門時、コンソールに文字列を出力することにより、プログラムの動きを確かめていきます。一般的にC++ではコンソール出力のために"iostream"の"std::cout"を利用します。 C++ #include <iostream> using namespace std; int main() { cout << "Hello, world!" <<</iostream>…

条件演算子ちゃんが可愛すぎてやばい

普段プログラミング関連の記事しか書いていない日は、PVがガクッと落ち込む傾向にあるにも関わらず、昨日の条件演算子ちゃんの記事は結構なPVを獲得し、コメントまで頂けました。嬉しかったので、もっと条件演算子ちゃんの話をしてみます。条件演算子を使い…

やっぱり条件演算子を使いたい

以前のような記事を書いた底辺プログラマーの私ですが、それでも条件演算子を使いたいタイミングがあります。 条件演算子を使いこなせない - 涼の成長記録 これは、完全に私の勝手な美学以外の何者でもないのですが、こういう文が気持ち悪いのです。 // 大き…

構造体とクラスの違い

C++

以下のようなコードを書いていたら、「構造体にもコンストラクター書けるの?」と驚かれ、驚きました。確かに、構造体はCの構造体そのままの機能だと思っている方は多い気がします。(私の周りだけかもしれませんが。)驚かれたのは、以下のようなコードです。…

コンテナがクラスのpriority_queue

C++

優先度キューに抱いていた勝手な幻想 STLのpriority_queue、つまり優先度キューのお話です。 priority_queue - C++ Reference 今作っているアプリケーションで、priority_queueのコンテナをクラスにして、それらを優先度順にプッシュできれば、いい感じに作…

static constの定数で、"定数式が必要"のエラー

C++

先日定数クラスを作ったのですが、今日STLのbitsetのテンプレート引数に、定数を指定すると、"定数式が必要"のエラーが発生しました。 ソースはこんな感じです。 TConstant.h #ifndef TConstantH #define TConstantH class TConstant { public: static const…

アクセサメソッドにdoxygenコメント入れると冗長

C++

まあ、記事タイトルの通りなのですが、 /*! 高さを返す。 @return 高さ */ int getHeight(); /*! 横幅を返す。 @return 横幅 */ int getWidth(); のような感じで、ずらーっと冗長なメソッド宣言が並ぶことになります。@returnを与えないと、ドキュメント化さ…

const, enumによる定数名は大文字にしない

C++

今まで、「名前付き定数は大文字にする」って勝手に思い込んでいました。事実、そういうプログラムをずっと書いてきました。CODE COMPLETEでもそう言っていました。キリストだって多分そう言っていました。 // マクロ #define MACRO 10; // const修飾子 stat…

constexpr

C++

C++素人の私が、大規模アプリケーションを開発するものだから、作るクラス作るクラス、WEBで調べながら、今の私が理解できる範囲で、最適な実装方法を模索しています。そんな中で、今日作るクラスは、アプリケーション全体で使用する定数を定義しておくクラ…

constメンバー変数をコピーコンストラクターでコピー

C++

constメンバー変数を持ったクラスをコピーする時に、コピーコンストラクターからコピーする方法が分からず、1時間ぐらい格闘していました。別にコピーコンストラクターであっても、普通のコンストラクターと同じくイニシャライザー使えば、constメンバー変…

IPv4アドレス文字列の区切り文字(.)を除去して0埋め12Byte文字列に変換する

C++

こんなルーチンが必要になったり。 /*! IPv4アドレス文字列の区切り文字(.)を除去して0埋め12Byte文字列に変換する。 例) ["192.168.0.1" → "192168000001"] @param address :変換元のIPアドレス文字列。 @param str :変換結果。12Byte確保しておくこと。入…

16進数ASCIIコードをint型の16進数に変換する

C++

こんな感じです。他に方法ないのですかね。 /*! 16進数ASCIIコードをint型の16進数に変換する。 例) ['0' → 0x00], ['a' → 0x0a], ['F' → 0x0f] @param character :変換元の16進数文字(ASCII) @return 変換結果。16進数文字でなければ0を返す */ int charact…

bool型をint型に変換

C++

bool型の変数を、int型に変換したい時が稀にあります。falseなら0, trueなら1にしたい場合、とりあえず、適当な変換ルーチン作っとけばいいかな、みたいな安易な考えの結果がこれです。 int boolToInt(bool b) { return b ? 1 : 0; } 何故か嫌われる三項演算…