C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

2017-09-01から1ヶ月間の記事一覧

C++ ツリー ノード 書いて覚えるための初心者自己中記事

ノードが複数のノードを接続されているデータ構造をツリーと呼ぶ。 代表的なのはパソコンのフォルダやファイルがそれ。 このツリーは階層的にデータを扱える。 次のノードを子ノード(child node) 前のノードを親ノード(parent node) 親と子をつなぐ線(…

C++ 再帰関数 書いて覚えるための初心者自己中記事

自分自身を呼ぶ関数を再帰関数と呼ぶ。 void Forever() {//再帰関数 cout << "Forever" << endl; Forever();//再帰呼び出し } int main() { Forever(); system("pause"); } 自分自身を呼ぶことを再帰呼び出しという。 永遠とループする。エラー。 スタックオ…

C++ スタックとキュー 書いて覚えるための初心者自己中記事

リストの先頭と末尾だけ操作できれば十分、といった状況では多機能なリストを使わないほうがいい場合があるらしい。 そんな時にじゃあどうするのか。という話。 リストのデータを順に処理するような場合 先に入れた順に先に出すのを FIFO First in First out…

C++ イテレータとアルゴリズム 書いて覚えるための初心者自己中記事

前回までは単方向・双方向の循環リストとノードの勉強をした。 nenechi.hatenablog.com この時、ノードの操作はfor文の条件式内で結構むき出しで行われていた。 for (const Node* node = head; node != eol; node = node->*dir) { cout << node->value << ' …

C++ 双方向リスト 書いて覚えるための初心者自己中記事

前回は単方向リストについて勉強した。 nenechi.hatenablog.com 次は双方向リスト。 単方向リストは次のノードのへのポインタだけだった。 双方向リストは前のノードへのポインタも持っている。 前回使っていた private: //リストの端(end of list)を表すノ…

C++ 単方向リスト 書いて覚えるための初心者自己中記事

配列の途中の要素を削除して詰める作業は配列には向いていない。 テキストでその効率の悪さを表現するために書かれたコードは、 vectorクラステンプレートの型に関数ポインタを設定。 関数ポインタの型は引数なし、戻り値の型がbool型。 vector配列関数ポイ…

C++ プリコンパイル済みヘッダファイル 書いて覚えるための初心者自己中記事

C++

複数のソースファイルで同じヘッダファイルをインクルードする状況で、 ソースファイルごとにそのヘッダファイルを解析するのが時間の無駄だそうです。 そんなときは、あらかじめそのヘッダファイルだけを先にコンパイルしてしまい、インクルードするときは…

C++ アライメント 書いて覚えるための初心者自己中記事

構造体やクラスのメンバ変数のサイズを合計してみても 実際のサイズのほうが大きかったりする。 きっちり詰まっていまいという話。 struct parson { char name[21]; int age; char birthmonth; char sex; }; int main() { cout << sizeof(parson) << endl; s…

C++ 強制終了 書いて覚えるための初心者自己中記事

使うもの abort() exit() abort() はいきなり打ち切る exit() は終了処理がある class Hoge{ public: virtual ~Hoge() { cout << "Hoge::~Hoge" << endl; system("pause"); } }; Hoge hoge; int main() { int n; cin >> n; if (cin.fail()) { abort(); } els…

C++ コマンドライン引数 書いて覚えるための初心者自己中記事

プログラムの始まりに情報を受け入れる。 プログラムを実行するときに情報を渡す。 視点が違うけど、この情報は常に文字列で渡される。 これをコマンドライン引数と呼ぶ。 現在居るディレクトリをカレントディレクトリと呼ぶ。 cd カレントディレクトリを変…

C++ main関数とスタートアップルーチン 書いて覚えるための初心者自己中記事

プログラムはmain関数が最初に呼び出される main関数の戻り値は必要なのか? main関数を呼び出しているのは誰か? main関数はスタートアップルーチンが呼び出している。 main関数の戻り値はスタートアップルーチンが求めている。 main関数が最初に呼び出され…

C++ 可変個引数 書いて覚えるための初心者自己中記事

printf や sprintf などは引数を大量に入れても問題なく動く。 今までの関数の作り方だと無理。 どうやっているのか。という話。 まず、仮引数のところで ... と書けば可変個引数になる。 可変個引数はそのまんまの意味。 int Sum(int first, ...) { int sum…

C++ 組み込みマクロ 書いて覚えるための初心者自己中記事

いままでマクロは #define で定義していた。 組み込みマクロといって標準の定義済みマクロなるものがある。 cout << __FILE__ << endl;//ファイル名 cout << __LINE__ << endl;//行番号 cout << __DATE__ << endl;//コンパイルした日 cout << __TIME__ << en…

C++ #if 書いて覚えるための初心者自己中記事

コンパイルするかしないかを制御する。というお話。 if (array == NULL) { throw invalid_argument("Average に変な引数が渡されました"); } 仮に、プログラムのどこかでエラー判定があったとして。 デバッグ中はこのままで、その後は必要ない。 という場合…

C++ voidへポインタ 書いて覚えるための初心者自己中記事

void 型(?)のポインタにいろいろな型のアドレスを代入してみる。 int main() { char c = '1'; int i = 2; double d = 3; void* p; p = &c;//ここでエラーにはなってない cout << *p << ' ';//ここでエラー p = &i; cout << *p << ' '; p = &d; cout << *p <<…

C++ 定義未定義未規定 書いて覚えるための初心者自己中記事

・処理系定義の動作 処理系(コンパイラ)によって定義される存在 コンパイラや環境が同じ場合に同じ結果をもたらす事が保証されている。 テキストにもよく出てきたりする int型 のバイト数を出してみましょう、で、環境によって違います。とかのあれ。 ・未…

C++ ショートサーキット 書いて覚えるための初心者自己中記事

条件式の真偽判定は必ず最後まで行われるというわけでは無い。 if (1 == 2 && 3 == 4) { ... }; この条件部分では最初の 第一条件 1 == 2 は false で、次の && <- この時点でもはや true にはならないと分かる。 3 == 4 <- ここを見るまでもない 結果 false…

C++ 関数ポインタ関係 書いて覚えるための初心者自己中記事

関数のアドレスは取得できる そして関数のアドレスを入れられる変数もある。 らしい。 関数のアドレスが取得できるという話は以前の勉強でやった覚えがある。 nenechi.hatenablog.com コレの中で、 ~~~~~~~~~~~~~~~~~~~~~~~ this とは Franction& operator *…

C++ クラステンプレートについて 書いて覚えるための初心者自己中記事

その前に typename ってなんだ? と思って確認した。 ~~~~~~~~~ 不明な識別子が型であることをコンパイラに通知します。 ~~~~~~~~~ 納得。 基本的なことをわかってなかったから理解するのが難しくなってしまう。 型ごとに定義を変更したクラステンプレートの…

C++ テンプレート引数について 書いて覚えるための初心者自己中記事

クラステンプレートの引数にクラステンプレートを。 の勉強。 まず以前勉強したクラステンプレートの記事↓ nenechi.hatenablog.com まずクラステンプレートで標準ライブラリにある、vectorについて。 vector クラステンプレートは配列に強いクラステンプレー…

C++ using  書いて覚えるための初心者自己中記事

nenechi.hatenablog.com この記事で勉強したusing をもっと勉強するらしい。 まずこれを、 #include <iostream> namespace Hoge { using namespace std; } int main() { Hoge::cout << "hello" << Hoge::endl; system("pause"); } 見たことない書き方。 新しい出会い。</iostream>…

C++ フレンド friend 不完全型 書いて覚えるための初心者自己中記事

nenechi.hatenablog.com この記事で一度勉強したfriend についてさらに勉強 過去の勉強では ~~~~~ friend オーバーロードの実装はクラス外で行うが 宣言部分はクラス内で行う。 その際宣言部の先頭に friend を記述する。 そうすると演算子オーバーロー…

C++ typeidf演算子 type_infoクラス ダウンキャスト クロスキャスト  書いて覚えるための初心者自己中記事

typeid 演算子を使うと型の情報をGETできる。 使い方は typeid ( 値 or 型 ) 返り値は type_infoクラスのconst参照です。 type_infoクラスは #include <typeinfo> が必要です。 このクラスのメンバ関数に name というのがあって 型情報をconst char* で返してくれる。 </typeinfo>…

C++ 多重継承 書いて覚えるための初心者自己中記事

多重継承とは 二つ以上のクラスを継承すること [ class A ] [ class B ] ↑ ↑ [ class C ] こんな感じ。 実際にやる。 class ABase {//基底クラス① public: virtual ~ABase() {} virtual void AHoge() = 0; }; class BBase {//基底クラス② public: virtual ~B…

C++ CodeIQ カウント・スリー問題

codeiq.jp これなんだけど、自分でコード書いてページ遷移すると6個のテストケースごとに判定してくれて全問正解だと合格なんだが、 1~6まででどんどん桁が増えていく問題で、小さい桁も大きい桁も問題なく正解しているのに3桁の問題が不合格になる。 …

C++ マクロ 書いて覚えるための初心者自己中記事

マクロについて マクロは #include に似ている #include は別ファイルを差し込む マクロはテキストを指定した場所に差し込む 差し込んでからコンパイル #define FIVE_TIMES for(int i_ = 0 ; i_ < 5 ; ++i_) //これがマクロ int main() { FIVE_TIMES { //こ…

C++ シノニム typedef 書いて覚えるための初心者自己中記事

シノニム (同義語) 処理を書くときに型を何にするか確定できていない場合に typedef で設定した仮の名前を使い、最後にまとめて設定する事が出来る。 typedef int ValueType; ValueType m_a, m_b; //今はint型 ValueType m_result; //今はint型 typedef do…

C++ インライン関数 書いて覚えるための初心者自己中記事

値を入れるだけ、取得するだけなどの簡単な関数に対して、 呼び出す時間がもったいないので呼び出す時間を無視する方法があるらしい。 それがインライン関数だそうだ。 インライン関数の作り方は関数の頭に(頭じゃなくてもいいけど普通はそうするらしい) i…

C++ ビット演算 書いて覚えるための初心者自己中記事

二進数の演算にはビット演算というものがある 五種類あって AND 論理積 OR 論理和 XOR 排他的論理和 NOT 論理否定 ビットシフト これらは演算子オーバーロードされない限り整数しか扱えない。 ANDの演算子は & 二項演算子だ。 0011 &)0101 ーーーー…

C++ 参照を返す関数と演算子オーバーロード 書いて覚えるための初心者自己中記事

参照を返すメンバ関数を作れば、アクセス指定子がprivate な変数でも それを参照している状態が返されるので数値を入れられる。 class Array { public: Array(int index); virtual ~Array(); int& At(int index); //参照を返す void Show(int index); privat…