約 1,734,675 件
https://w.atwiki.jp/poppy/pages/30.html
ええと数字ばかりで目がちかちかする方も多いでしょうから、文学的な説明を試みて見ましょう。(「君、それは文学だよ」の意味かもしれません…。) ああ…意地でもこの配列で入力しています。意地でも練習のための練習はしていません。尤も、作っている間に頭には入っていますけれども。さすがに一週間ではまだまだ。 まず前提…の前に私の配列遍歴 JISかな 最初はこれでした。ヘミングウェイ式で。 NICOLA これで満足できる方は多いと思います。何と言っても手が覚えやすいです。 ローマ字 便利です。脳内コストとか感じません。でも手が痛くなります。 試用 花 飛鳥 前提 新しい入力方式の習得コストはさほど高いわけではありません。一つの入力方式しか経験されていない方は、習得時の経験からこれを大変なことであるとお考えになるでしょう。しかし、この最初に払った労力のうち少なくない部分は、タイピングという運動形態の習得コストではないでしょうか。 入力方式の多数派が仮名入力からローマ字入力へ移行したのは、このことと無縁ではないでしょう。打鍵範囲が広いものを習得するには、新たな指の動かし方を習得する必要があるからです。苦労して広い打鍵範囲を習得したら幸せになれるのかというと、それをしていない私にはなんとも言えません。 そんな苦労しないで幸せになれる方法を考えよう、と思ったわけです。 習得コストも考慮に入れて、なおかつその悪影響を極小化すべし。 基本方針=打鍵範囲の極小化に拠り打鍵効率と疲労の低減を図る。 打鍵範囲で選択するならば行段系が普通ですが、打鍵効率で考えるとどうしても不利です。省打鍵のために拡張を図ると打鍵が分散しますし、習得コストが増えてしまいます。規則的に配置すれば頭にはすぐに入りますけれども、習得する=指が勝手に動くようになるのはまた別の話ですから。その割に打鍵数は減らないのです。アルペジオの気持ちよさを捨てるのも勿体無い。却下。 仮名配列となるとシフト方式が問題になりますね。親指2シフトはどうか。これ有力なんですけれど難があります。 親指キーの確保。物理的な問題もありますけれど、無変換>BS、変換>ENTER兼(通常の)シフトと言う割付を何年も使っています。同時打鍵用にBSやENTERはやはり問題があります。 ストレートシフトがそもそも嫌。打ち良いのは右手で言うとIOJKL;くらい。私には下段は打てたものでない。まあ「爪の長さ」の影響が大きいと思いますから、一般論ではありませんよ。親指キーが一段下にある専用キーボードなら話は違ってきますし。 ………と考えていたのだけど、気を付けて見ると左手は,結構ストレートシフトで打っている。打ち良い位置限定ですけれど。右親指の自然な位置が割れ目だからだろうか。まああんまり考える必要もなくて、手が勝手に打ち良い方でシフトしてくれるらしい。むしろ「次に打たないほうの手」でシフトするのが楽ということかもしれない。(英文タイプではSPACEをそのように打っています。)……… 一般論に戻りますが、親指がキーを打ちやすい位置にいるためには手が動きづらい。逆に言うと、同じ打鍵範囲を広く感じさせる方法だということになります。これは基本方針に反するのです。 さて親指は1シフトと決まったわけですが、新JISをセンターシフトで実装したものがまさにそれです。清音は1ストロークなので見た目は美しいのですけれども難点があるようです。(虞美人草配列的には、ですよ。) 濁る仮名の配置に制約が大きい。これでは基本方針の実現の妨げとなる。 もう一つ、見た目は清濁で同じ鍵を使うで覚えやすそうだが、実際はストロークが違ってしまう。これではストロークの援用ができないので、習得コストの低減効果が低い。「か」が打てれば「が」も打てる…と言うのは間違ってはいない。けれどもそれは、「かん」が滑らかに打てたら「がん」が滑らかに打てること、を保証するだろうか?「かん」と「へん」が同じストロークであることは、習得の助けとはならないのではないか? 濁音にこそ、親指を使うとしよう。 今度は、清音を1,2ストロークに割り振ることになる。なんか気持ち悪いことの様に感じられるかもしれませんけれど、却って濁音が2ストロークである事の方が気持ち悪いのです。一般的にですが濁音は強く短く発音するものです。そうするとこれはエイヤと同時打鍵する感覚と相性が良い。 ………どちらも1ストロークで無きゃ嫌というのは尤もなので、そういう方は2シフト方式がよろしいかと思います。……… でもね、ヒトと云うのは柔軟な生き物で、慣れたら気持ち悪いとは思わないはずです。そうでなければ、「っん」に不備のあるローマ字入力なんてやってられません。 sippai, kassai, annna, kanneiなんておかしいですよ。sitpai, katsai, anna, kan-eiであるべきです。こういう欠陥は、しかし、仮名入力にもあるんです。拗音もそうなんですけれど、「っ」問題もあるんです実は。私、「国会」を「酷かい」?とタイプしてしまいます。ローマ字のkokkaiの方が間違えないですね。まあこれは仮名入力の問題点ではなく、表音主義な現代仮名遣いの欠陥ですけれども。…旧仮名が良いと言ってる訳ではありませんよ。振り仮名を付けるのならば「国会(こっかい)」が良いです。… 話が逸れてしまいました。要はちょっとくらい気持ち悪くても効率のいいやり方が良い、という考え方で配列設計したということです。勿論、気持ち良いに越したことはないのですけれど、それが効率とのトレードオフであれば検討を要するということです。原理主義は美しい。けれど、それには対価を払うことになるのです。 払っても良いコストは勿論ありますよ。ちょっと配列選びの話をします。自分のリズムに合うということ、これが一番大事なことだと思います。いくら完成度の高い配列であろうと、リズムが合わないことには駄目なんです。この配列つくる前に他の配列作者の書いていることをかなりたくさん読み返したのですけれど、感覚の遠さを感じることが随分あります。私、ローマ字便利・脳内コストなんかないと言いましたけれど、更なる爆弾発言をします。 漢字>仮名変換のほうが、漢字>ローマ字変換よりコストが高いのではあるまいか? ※これは証明不可能です。私の感覚に過ぎません。 口語・大和言葉・日常語であれば仮名のイメージがすぐ浮かびますから、仮名の方が優っています。しかし文章語・漢語・抽象概念ですとイデア>漢字のイメージ(書けと言われて書けるかどうかは別の話です)>脳内発音>打鍵となります。同音異義語というものがありますから、発音というのは劣化した情報なのですね。(だからこそ仮名漢字変換が必要なのです。)その劣化した音声言語では抽象思考なんてできないのです。ですから漢直以外では3段階ものステップを踏むことになるのです。勿論、頻出であればイデア>打鍵という様になりえるのですが。 さて、ローマ字のほうがコストが低いというとんでもないお話です。何でそんなことになるかといいますと、表音文字としてはアルファベットのほうが優れている………と感じるからなんです。同音異義語はおいて日常語を書いても見にくくて仕方がない。まあ、馴れという要素も大きいのですが。 仮名文字は漢字と混ぜ書きして使うものであるという特徴をもっていますから、表音文字として劣っていても仕方がないんです。 出典 フリー百科事典『ウィキペディア(Wikipedia)』 音節文字(おんせつもじ)とは、表音文字のうち、音節が単位の文字のこと。 日本語の仮名が代表的。仮名のように、音素の組み合わせでなく、各音節が独自の形を している音節文字を純粋音節文字と呼び、世界的に見て珍しい。一方、ハングルは音素を表す字母を音節ごとに組み合わせて表記する。このような文字を音素音節文字あるいは結合音節文字という。 とまあ、かな文字というのは珍しいとされていますが、これをたまたまと考えるか、表音文字として不利であるからであると考えるかは勿論自由です。 ………ええと、話が進まない。しかもなんて危険な発言なんだ……… 私にとって快適な打鍵のリズムを説明する前提として、脱線したのでした。 こと 創作打鍵 では 一つのイデアを なるべく速く打ち切ってしまいたいのです。 dlf bjkahEdk; Wdj dmfoa iWked s gmRh djzh junow irlel a Wkd. イメージとしては、こんな感じでしょうか。 lkj I f iwfj, dl;g s;I Wicjs. (続く)
https://w.atwiki.jp/csharpmemo/pages/12.html
配列 概要 ・配列は、1 次元配列、多次元配列、またはジャグ配列のいずれかになる. ・配列要素の初期値は,規定値は0,参照要素はNullとなる. ・n個の要素の配列は,0,1,・・・n-1のインデックスが付けられる. ・配列の要素はどのような型でもかまわない. ・配列型は,Array型から派生した参照型 ・IEnumerableとIEnumerableを実装する. ・foreach反復処理が可能 文法 配列の宣言 型名[] 配列名; 配列の作成 配列変数 = new 型名[配列の長さ]; 例 class Program { static void Main() { int[] array = new int[4]; array[0] = 10; array[1] = 11; array[2] = 12; array[3] = 13; for(int i=0; i array.Length; i = i + 1) { Console.WriteLine(array[i]); } Console.ReadLine(); } } 出力 10 11 12 13 プロパティ Length すべての次元内の要素の総数を表す32ビット整数を取得する 配列名.Length Rank ランク(次元数)を取得する 配列名.Rank SyncRoot アクセスを同期するために使用できるオブジェクトを取得する 配列名.SyncRoot 例 class Program { static void Main() { int[] array = new int[4]; array[0] = 10; array[1] = 11; array[2] = 12; array[3] = 13; Console.WriteLine(array.Length); Console.WriteLine(array.Rank); Console.WriteLine(array.SyncRoot); Console.ReadLine(); } } 出力 4 1 System.Int32[] メソッド clear 配列の型に応じて0,false,nullに設定する clear(配列名,開始位置,削除する数) 例 class Program { static void Main() { int[] array = new int[4]; array[0] = 10; array[1] = 11; array[2] = 12; array[3] = 13; Console.WriteLine("元の配列"); PrintArray(array); Array.Clear(array,1,2); Console.WriteLine("削除後"); PrintArray(array); Console.ReadLine(); } static void PrintArray(Array myArray) { foreach (int i in myArray) { Console.WriteLine(i); } } } 出力 元の配列 10 11 12 13 削除後 10 0 0 13 Clone 配列の簡易コピー (配列の型)array.Clone() Copy 配列の簡易コピー Array.Copy(コピー元,コピー先,コピーする要素数); Array.Copy(コピー元,コピー元開始位置,コピー先,コピー先開始位置,コピーする要素数); ConstrainedCopy 配列の簡易コピー Array.ConstrainedCopyコピー元,コピー元開始位置,コピー先,コピー先開始位置,コピーする要素数); ・Copyと異なりコピーが完全に成功しない限り、変更は一切適用しない. 例 class Program { static void Main() { int[] array = new int[4]; array[0] = 10; array[1] = 11; array[2] = 12; array[3] = 13; int[] array2 = array; int[] arraycopy = new int[4]; Array.Copy(array, arraycopy,2); int[] arrayclone = (int[])array.Clone(); array[1] = 14; arrayclone[3] = 15; Console.WriteLine("array"); PrintArray(array); Console.WriteLine("array2"); PrintArray(array2); Console.WriteLine("arraycopy"); PrintArray(arraycopy); Console.WriteLine("arrayclone"); PrintArray(arrayclone); Console.ReadLine(); } static void PrintArray(Array myArray) { foreach (int i in myArray) { Console.WriteLine(i); } } } 出力 array 10 14 ←array[1] = 14;により値が変化 12 13 ←arrayclone[3] = 15;によっても値が変化しない array2 10 14 ←array[1] = 14;により値が変化 12 13 ←arrayclone[3] = 15;によっても値が変化しない arraycopy 10 11 ←array[1] = 14;によっても値が変化しない 0 0 arrayclone 10 11 ←array[1] = 14;によっても値が変化しない 12 15 ←arrayclone[3] = 15;により値が変化 Reverse 範囲内の要素の順序を反転させます. Sort オブジェクト内の要素を並べ替えます. 例 class Program { static void Main() { int[] array = new int[4]; array[0] = 13; array[1] = 11; array[2] = 12; array[3] = 10; Console.WriteLine("ソート前"); PrintArray(array); Array.Sort(array); Console.WriteLine("ソート後"); PrintArray(array); Array.Reverse(array); Console.WriteLine("リバース後"); PrintArray(array); Console.ReadLine(); } static void PrintArray(Array myArray) { foreach (int i in myArray) { Console.WriteLine(i); } } } 出力 ソート前 13 11 12 10 ソート後 10 11 12 13 リバース後 13 12 11 10 参考文献 HP リンク 内容 評価 stack*(スタックアスタリスク) C#プログラミング入門第3回:C#基礎 パート1(クラスライブラリ) - ★★☆☆☆ @IT .NET TIPS C#で配列を宣言するには? null参照と要素数0の配列についての説明 ★★★★☆ ++C++;// 未確認飛行 C++ 配列(C# によるプログラミング入門) 詳細な説明 ★★★★★ WisdomSoft 配列 - ★★★☆☆
https://w.atwiki.jp/scclassdoc/pages/16.html
クラス名は「名詞」にしよう。 クラス名はパスカルケースにしよう。
https://w.atwiki.jp/cschola/pages/63.html
配列 今回は「配列」というものについて説明します。 配列とは変数を一度に量産できる機能です。 変数が箱だとすると、配列はその箱がいくつも並んでいるようなものです。 配列を使えば一度にいくつものデータを処理する場合にとても便利です。 使い方は難しくないので使って覚えましょう。 宣言 配列は宣言しないと使うことができません。 int Array[5]; 宣言するときは変数と同じように 「型」 と 「名前」 を書き、 その後ろに [ ] を書いてその中に 「要素数」 を書きます。 名前は自由につけることができますが、C言語で既に使われている命令などは使えません。 [ ] の部分ですがここが配列の数になります。 今回は 5 なので int型 変数を5つ用意したことになります。 ここに入れられるのは定数だけです。※変数を入れることはできません。 これを配列の持っている要素の数、「要素数」と呼びます。 代入 配列に数値を代入するには「添え字」を使って「要素」を指定しなくてはいけません。 Array[0] = 3; //0番目に3を代入 Array[1] = 5; //1番目に5を代入 Array[2] = 7; //2番目に7を代入 Array[3] = 6; //3番目に6を代入 Array[4] = 5; //4番目に5を代入 添え字とは [ ] の中の入っている数字のことです。 この数字は0番目から始まっているため、要素数が5のときは4番目までしかありません。 それ以降の添え字を使うとエラーやバグの原因になります。 最後の添え字は要素数引く1だということを覚えおきましょう。 画面に出力して表示する場合も添え字を使います。 printf("%d\n",Array[0]); printf("%d\n",Array[1]); printf("%d\n",Array[2]); printf("%d\n",Array[3]); printf("%d\n",Array[4]); これでも表示できますが、とてもめんどくさいですね。 もっと効率の良いやり方を紹介します。 for文を使った方法です。 for文 for(int i = 0; i 5; i++){ printf("%d番目は%dです。\n",i,Array[i]); } 実行すると0番目から4番目まで表示されます。 Array[i] の [ ] の中に変数 i が入っています。 宣言するときの「要素数」には変数を使うことはできませんが、 それぞれの要素を示す「添え字」には変数を使うことができます。 for文を使ってユーザーの入力した数値を配列に入れることもできます。 int Array[5] = {}; printf("数値を5つ入力してください\n"); for(int i = 0; i 5; i++){ scanf_s("%d", Array[i]); } for(int i = 0; i 5; i++){ printf("%d番目に入力した数値は%dです。\n",i,Array[i]); } 初期化 配列の初期化にはいくつかルールがあるので紹介します。 int Array[5] = {10,4,8,3,11}; for(int i = 0; i 5; i++){ printf("%d番目は%dです。\n",i,Array[i]); } { } の中は左から 0番目,1番目,2番目… となっています。 初期化は代入より短いコードで済みます。 0で初期化する場合は、もっと省略した書き方ができます。 宣言時に { } の中に何も書かなければ自動的にすべての要素に0が入ります。 int Array[5] = {}; for(int i = 0; i 5; i++){ printf("%d番目は%dです。\n",i,Array[i]); } また、宣言時に { } の中が足りない場合、自動的に0を補います。 int Array[5] = {10,4}; for(int i = 0; i 5; i++){ printf("%d番目は%dです。\n",i,Array[i]); } [ ] の中に何も書かず初期化した場合その個数に合わせた配列を自動的に用意します。 int Array[] = {3,6,5,9,2}; for(int i = 0; i 5; i++){ printf("%d番目は%dです。\n",i,Array[i]); } 整列 配列の中を整列(ソート)したい場合があると思います。 その場合は以下のように書きます。 int Array[5] = {3,6,5,9,2};// 配列初期化 int tmp = 0;// 入れ替え処理用の変数 // 配列内を昇順(小さい順)にソート for (int i = 0; i 4; i++) { for (int j = i + 1; j 5; j++) { if (Array[i] Array[j]) { // 入れ替え処理 tmp = Array[i]; Array[i] = Array[j]; Array[j] = tmp; } } } // 配列内の値を表示 for (int i = 0; i 5; i++) { printf("%d\n", Array[i]); } 上のソートはバブルソートといいます。 他にもソートの方法はありますが、今はこれだけ覚えておけばいいです。
https://w.atwiki.jp/csharpmemo/pages/10.html
動的配列 参考文献 stack*(スタックアスタリスク) C#プログラミング入門第3回:C#基礎 パート2(クラスライブラリ)
https://w.atwiki.jp/hakuryu7orange/pages/36.html
何かと便利で面倒くさいのでメモ. クラス内クラス 単純にクラスの中でクラスを宣言すればいい. 面白いところは,外側のクラスで宣言されている変数(privateも)に,アクセスできるところ. つまり,クラス内のクラスからみれば,グローバル変数のようなものであるところである. クラスを使う利点は,変数を隠すことでもあるので,便利. クラス内クラスの一次元配列 といっても,クラスの中でクラスを宣言すればいいだけで, class cTARO{ public cHANAKO*g_clHANAKO; } メモリの確保とかは,こんな感じになる. cTAROg_clTARO; g_clTARO.g_clHANAKO = new cHANAKO[5]; 解放するのは,こんな感じになる. delete []g_cltaro.g_clhanako さらにこのクラス内にクラスとか構造体とか配列とかを入れている場合は,別途deleteを同様にして行えばいい. クラス内クラスの多次元配列 普通の多次元配列を宣言するのと同様にする. まず,普通の多次元配列は, int **matrix; matrix = new int*[row]; for(int i=0;i row;i++) matrix[i] = new int[column]; のように宣言し,解放は, for(int i=0;i row;i++) delete []matrix[i]; delete []matrix; とする. クラスの場合も同様で, cHANAKO**g_clHANAKO; と宣言して,さっきの例を用いると, g_clTARO.g_clHANAKO = new cHANAKO*[2]; for(int i=0;i 2;i++) g_clTARO.g_clHANAKO[i]=new cHANAKO[5]; のような感じでメモリを確保する. 解放も同様で, for(int i=0;i 2;i++) delete []g_clTARO.g_clHANAKO[i]; delete []g_clTARO.g_clHANAKO; のようにするとうまくいく.
https://w.atwiki.jp/cschola/pages/26.html
オブジェクト指向 C++はオブジェクト指向型プログラミング言語です。 従来の手続き型言語に比べ、プログラムの柔軟性やプログラミングの効率、データの安全性が高くなっています。 オブジェクトとは物や概念を表し。 性質(状態)と動作(操作)を持ちます。 例) 車の性質: 馬力 重量 乗車人数 車の動作: 加速する 減速する エンジンをかける エンジンを止める クラス クラスは構造体の機能を拡張したものです。 クラスの中に定義された変数をメンバ変数と言います。 #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character();// コンストラクタ ~Character();// デストラクタ }; アクセス修飾子については、後で説明します。 とりあえず今は public と書いておきましょう。 コンストラクタとデストラクタも後で説明します。 メンバ関数 構造体ではメンバとして変数しか扱えませんが、クラスでは関数も扱うことができます。(メンバ関数) ヘッダーファイルではクラスにメンバ関数を定義します。 ソースファイルではヘッダーファイルをインクルードし、メンバ関数の実装を記述します。 /*--------------Character.hの中身----------------*/ #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character();// コンストラクタ ~Character();// デストラクタ void Damage(int damage); // ダメージ関数 }; /*--------------Character.cppの中身----------------*/ #include "Character.h" // ダメージ関数 void Character Damage(int damage){ this- HP -= damage; } メンバ関数の実装を記述するにはスコープ解決演算子( )を用いてクラスを指定します。 this- 上の例では HP の前に this- が付いていますが、これを付けるとそのクラスが保有しているメンバ変数(もしくは関数)を指定できます。 this- は省略することもできます。 /*--------------Character.cppの中身----------------*/ #include "Character.h" // ダメージ関数 void Character Damage(int damage){ HP -= damage; } じゃあ何のために存在すんだよ、と思うかもしれませんが 以下のような場合に使用します。 /*--------------Character.cppの中身----------------*/ #include "Character.h" // ダメージ関数 void Character Damage(int HP){ // Characterのメンバ変数の HP から引数の HP を引く this- HP -= HP; // 引数の HP から引数の HPを引く // HP -= HP;←これじゃダメ } this- を付けずに HP とだけ書くと、引数の HP が参照されてしまいます。 このようにメンバ変数名と引数名が同じになってしまった場合に必要となります。 でもはっきり言って引数名を被らせなきゃいらない子です。 コンストラクタ クラスにはオブジェクトを生成するための初期化行うコンストラクタというものがあります。 コンストラクタはクラスと同じ名前の関数で、 オブジェクトを生成するときに必ず実行されます。 そのため、コンストラクタには初期化処理を記述します。 コンストラクタの定義では戻り値はありません。 引数は必要に応じて記述できます。 /*--------------Character.hの中身----------------*/ #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character(std string name, int HP, int STR);// コンストラクタ ~Character();// デストラクタ void Damage(int damage); // ダメージ関数 }; /*--------------Character.cppの中身----------------*/ #include "Character.h" using namespace std; // コンストラクタ Character Character(string name, int HP, int STR){ this- name = name; this- HP = HP; this- STR = STR; } // ダメージ関数 void Character Damage(int damage){ this- HP -= damage; } コンストラクタが必要ない場合は何も書かなくてもデフォルトコンストラクタとして定義されています。 また、自分でコンストラクタを定義した場合は必ず実装も書かなければいけません。 デストラクタ デストラクタはオブジェクトを破棄するときに呼び出される関数です。 ~クラス名() のように定義します。 デストラクタでは終了処理を記述します。 コンストラクタと同様に戻り値は無く、 さらに、引数をとることできません。 /*--------------Character.hの中身----------------*/ #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character(std string name, int HP, int STR);// コンストラクタ ~Character();// デストラクタ void Damage(int damage); // ダメージ関数 }; /*--------------Character.cppの中身----------------*/ #include "Character.h" using namespace std; // コンストラクタ Character Character(string name, int HP, int STR){ this- name = name; this- HP = HP; this- STR = STR; } // デストラクタ Character ~Character(){ // 何もしない } // ダメージ関数 void Character Damage(int damage){ this- HP -= damage; } 終了処理はあまりすることが無いので、デストラクタ内は何も書かない場合も多いです。 するとすればDXライブラリの画像の解放やクラスの解放するくらいです。 testcounter 合計 - 今日 - 昨日 -
https://w.atwiki.jp/kmo2/pages/12.html
配列 0から数える。添え字は[]で囲う。初期値は[1,2,3]のように指定できる。 Arrayクラスとして実装されているのか。 必要に応じてサイズは動的に大きくなる。 配列のサイズはArrray#lengthメソッドで分かる。 array = [1,2,3] for a in array do puts a end puts array.length puts "=============" array[10] = 1 for a in array do puts a end puts array.length 二次元配列 2x3の二次元配列を確保して全て0に埋めるには、ブロックを使って以下のようにする Array.new( height ) do Array.new( width, 0 ) end 以下のように書くと、内側のArray.newで確保した配列の参照を外側のArraw.newで確保したべての配列で同じものを参照してしまう。 array = Array.new( height, Array.new( width, 0 ) )
https://w.atwiki.jp/yoshida2/pages/37.html
アドレスクラスによる三つの区分け。 クラスA ネットワーク部が8ビット。約1677万台のホストを接続可能。 クラスB ネットワーク部が16ビット。65534台のホストを接続可能。 クラスC ネットワーク部が24ビット。254台のホストを接続可能。 ●高柳 遼 クラスA ネットワークアドレス長は8ビット ホストアドレス長は24ビット クラスB ネットワークアドレス長は16ビット ホストアドレス長も16ビット クラスC ネットワークアドレス長は24ビット ホストアドレス長は8ビット 多田敬太 クラスA ネットワーク部が8ビット幅 約1677万台 クラスB ネットワーク部が16ビット幅 65,534台 クラスC ネットワーク部が24ビット幅 254台のホストを接続可能。 押切孝
https://w.atwiki.jp/sklab/pages/21.html
配列 スタックに参照、ヒープにデータが入る。 ArrayList:重い ArrayListクラスは複数のデータ型を混在させることが出来る。 ArrayList al = new ArrayList(); al.Add = 123; al.Add = abc 値の格納時にボックス化を行っているから。 Console.WriteLine((int)al[0]); ← ボックス解除する必要がある。 object array = new object[5]; array[0] = (object)123;というイメージか。エラーになってしまったが。 取り出すときは基本的にボックス解除する必要がある。 インデクサ:オブジェクトに対して、配列のようなアクセスを可能にする。 Listなどで List strList = new List(); strList.Add( test ); Console.WriteLine(strList[0]); とアクセスできるがこれはコレクションを扱うクラスではインデクサが設定済みのためである。 Dictionaryクラス キーと値をペアで管理する。 var dicObj = new Dictionary(); O(1)で検索できるアルゴリズム strArray[N] ={ alice , bob , carol }; var dicObj = new Dictionary(); int count = 0; foreach(string str in strArray){ dicObj.Add(str,count); } Console.WriteLine( dicObj[ carol ] + 番目がcarolです。 ); 間違ってるかも