2011-03-01から1ヶ月間の記事一覧

幅優先検索と深さ優先検索の骨格

深さ優先検索:再帰関数で深くまで。 関数1開始→関数1−1開始→関数1−1終了→関数1終了 なので、スタックと同じ. void dfs(int x, int y) { //...の条件のとき再帰せず、終了。 if(...) {...} //..の条件のとき再帰せず、終了。 if(..) {..} //再帰関数で…

pair ヘッダファイル

pairは2つの値をペアにして1つとして扱うためのクラス。 template struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1()), second(T2()) {} pair(const T1& x, const T2& y) : first(x), second(y) {}…

迷路

char arr[N][M+1] = {"#S######.#", "......#..#", ".#.##.##.#", ".#........", "##.##.####", "....#....#", ".#######.#", "....#.....", ".####.###.", "....#...G#", }; で、迷路をする。最短距離を求めたい。 深さ優先検索すると、パンクするみたいな…

文字列リテラルの注意点。

"abc" と'abc'では意味が違うというお話。 C++言語ではどちらもchar型で解釈されてしまうが、 Cでは"abc"はchar型、'abc'はint型に解釈されてしまう。2011.4.4追記 char key = 'a'; char ch = key[0]; int num = key[0]; cout したら、エラー出ずに 97 a と…

6:各商品クラスを作成

仕様: りんご、バナナ、トマト(野菜)、にんじんが商品である。 りんごの仕入れ値は300円、定価は400円。 バナナの仕入れ値は200円、定価は300円。 トマトの仕入れ値は30円、定価は50円。 にんじんの仕入れ値は50円、定価は70円。 それぞれ仕入れ数を入力…

5:virtual 仮想関数の効果

virtual SellProductとしていたおかげで、 基底クラスのメンバ関数から読んだ場合などでも、本来の型に応じて呼び分けられる。 仮想関数はどんな状況でも、そのオブジェクトの本来の型のものが呼ばれる。 main.cpp #include "Product.h" #include "Fruit.h" …

4:野菜クラスを作ってみる。

Vegetable.h #ifndef VEGETABLE_H_ #define VEGETABLE_H_ #include "Product.h" class Vegetable : public Product { public: Vegetable(const int nCostPrice, const int nListPrice, int nRestCount); virtual ~Vegetable(); protected: bool m_bThuFlag; …

constのつけ方。

class Product virtual void Disp() const { //状態を表示 cout 仕入れ値:" constを付加する。 cout 仕入れた数:" 仕入れ額:" class Fruit virtual void Disp() const{ Product::Disp(); //ここは、constつけたので、OK! cout constオブジェクトは、constメ…

3:果物クラスを作ってみる。

仕様: りんご、バナナ、トマト(野菜)、にんじんが商品である。 りんごの仕入れ値は300円、定価は400円。 バナナの仕入れ値は200円、定価は300円。 トマトの仕入れ値は30円、定価は50円。 にんじんの仕入れ値は50円、定価は70円。 それぞれ仕入れ数を入力…

2:複数の注文に対応する。

動的にメモリを確保する練習というか、復習。 int main() { //intの大きさのメモリを確保する。 //メモリの位置はnewが返してくれるので、ポインタに入れておく。 Product* p = new Pruduct; //本来ならば、(*p).Disp()のような形でアクセスしなければならな…

C++ 定数について。

C言語では、マクロを用いて、 #define SIZE 5 とすれば、OKだった。C++でも同じようにすることはできるが、スコープを狭くしたいと思った時は、 const int SIZE = 5; とする。定数式なので、 int array[SIZE] = {1,2,3,4,5}; としても、エラーは出ない。 逆…

C++ クラスを作ってみる 構築編

http://www.idea-tech.net/index.htm こちらを参考にしました。 問題は、 八百屋さん計算システムを以下の仕様とガイドラインにしたがって コマンドライン・アプリケーションとして設計してください。 仕様: りんご、バナナ、トマト(野菜)、にんじんが商…

C++::オブジェクト生成

オブジェクト生成 CBook HarryPotter( "ハリーポッター賢者の石", "J.K.ローリング",1900, 52, 0 ); 範囲は、"{"から、"}"で囲まれる範囲で。動的オブジェクト生成 CBook* pHarryPotter = new CBook( "ハリーポッター賢者の石", "J.K.ローリング",1900, …

クラスについて。

アップキャスト キャストする時、派生クラスのオブジェクトは基底クラスへの参照に渡すことができる。 継承木の上の方にあるクラスへのキャストなので、アップキャストという。 protectedアクセス指定子 protected:指定すると、それ以降のメンバは、外部には…

文字コード

#include using namespace std; void ShowCode(char ch) { cout 文字コードは''で囲む。char型になる。 C言語ではint型になるので、注意。

参照渡しについて。

型のすぐ後ろに&をつける。(例:int& i) 参照渡しとは遠隔操作であり、エイリアスである。もっというと、アドレス乗っ取りである。 ポインタに似ているが全然違う #include using namespace std; void ref(int& x) { cout //001BF71C cout //1927 x++; } voi…

jQueryと「生の」javascriptの違い

考え方はXPathと似てるかも。 ①$(selector) //[jQuery Object] は複数のノードっぽいものをいっぺんに扱える。要素なりの集合と思えばいい。 [HTMLCollection]や、[NodeList]では、for文を使って一つ一つ処理する必要がある。

jQuery コア

Core $('selector'); $('selector', parent-element); === $('parent-element').find('selector'); $("raw html", An new map of attr).appendTo("body");

Ajax基本まとめ

オブジェクト作成 function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch(e) {} try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} alert("XMLHttpRequest not supported"); return null; } function createXMLHt…

setTimeoutとsetIntervalの違い

setTimeout( "何か関数(メソッド)の呼び出しをするための記述", 500); 一回きり。setInterval(指定したい関数,指定時間); サイクル。 setIntervalはなにが起ろうが、他の処理に関係なく、1分ごとなので、 ビジー状態をおこすとえらいことになるので、あま…

createTextNodeの第一引数

特殊文字が入っていた場合、エスケープしてくれる。

オブジェクト指向2 コンストラクタとリテラル

引数があるとき。 コンストラクタ(型)何個も変数を作るとき、型、つまり、コンストラクタを使う。 function Calender(year, month) { this.theYear = year; this.theMonth = month; //関数の場合もあたかも変数のように同じように扱ってよい。 this.getCal…

ul, olの組み方。

var li = ul.getElementsByTagName("li"); var liGroupLength = Math.ceil(li.length / 5); // 分割後のliGroupの数 var ulGroup = []; for (var i = 0; i

style系での代入の注意

var style = div.style; [Object CSSStyleDeclarationObject] だと、style.border = "~~"; ト代入しても、普通に反映されるが、var styleBorder = div.style.styleBorder; [Object DOMStringObject] ト代入すると、 中身({..}の部分)が表示されることにな…

table要素作成 まとめ。

<table> <thead> <tr> <th></th> <th></th> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> <caption></caption> </table>こういうのを作りたい。 DOM Level2に独自のHTMLTableElementとか、いろいろあるので、 それを使う。まずは、 var table =…

関数について

function foo() { } var foo = function() { } foo() <- ()をつけると、関数になる。関数はオブジェクト。 var foo = new Object(); foo.name1 = hoge; foo.name2 = function() { }; は var foo = { name1 : hoge, name2 : function() {...}, } とおなじ。Ja…

javascript全体図

オブジェクト指向の実験1

var today = new Date(); //今日の日付は2011.3.22とする。 var toYear = today.getFullYear(); var toMonth = today.getMonth() + 1; var toDate = today.getDate(); today.setMonth(1); alert(toDate); /*Dialog:: toDate = 1 */ あまりに不細工なので、ク…

Node.appendChild(Node)の挙動

いま、 <div id="content"> //ここからjavascriptの描画部分 <img /> <span>testtest</span> //ここまでjavascriptの描画部分 <div>とする。 function $id(id) { return document.getElementById(id); } var content = $id("content"); var df = document.createdocumentFragment();で取得して、imgは迷</div></div>…

getElementsByTagNameとgetElementByIdの違い

まず一番目。 document.getElementsByTagName('a')は複数[NodeList Object]だが、 document.getElementById('main')は単数[HTMLElement Object]である。 二番目 document.getElementsByTagName('a')......OK div.getElementsByTagName('a')...........OK最初…