Cに関するpknightのブックマーク (72)

  • 27章 テンプレートクラス - (void*)Pないと

    http://www.geocities.jp/ky_webid/cpp/language/027.html テンプレート関数のクラス版です。凄くややこしそうな気がしますね。 とにかく実装してみます。 #include <iostream> using namespace std; template <class T> class CSample { public: CSample(T t) { m_t = t; } T Get () { return m_t; } private: T m_t; }; int main() { // インスタンス時に何の型かを指定する。 CSample<int> obj1(100); CSample<char*> obj2("abcd"); cout << obj1.Get() << endl; cout << obj2.Get() << endl; r

    27章 テンプレートクラス - (void*)Pないと
    pknight
    pknight 2010/03/15
    テンプレートによるキューの実装
  • ハッシュの実装(演習版) - (void*)Pないと

    K&R 演習6-5 ハッシュの実装は一度やっていますが、K&Rに載っていたハッシュ実装(チェイン法)がなかなか良さそうだったので参考にしながら自分で再実装してみます。 また、演習もやってみます。 lookupとinstallによって保守されるテーブルから、名前と定義を削除する関数undefを書け。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define TABLEMAX 100 struct HASH { struct HASH *next; char *key; char *data; }; typedef struct HASH HASH; HASH *lookup(HASH **hash,char *key); unsigned int gethash (char *s) { unsigned int

    ハッシュの実装(演習版) - (void*)Pないと
  • 単語数算出を二分木でやる - (void*)Pないと

    K&R 6.5 単語数の算出処理に二分木の話が出てきたので復習がてら実装してみる。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #define WORDMAX 100 struct NODE { char *word; int count; struct NODE *left; struct NODE *right; }; typedef struct NODE NODE; NODE *create_node (char *str); NODE *add_node (NODE **head,char *str); void preorder(NODE *n); int getword (char *word,int max); NODE *create_node (char *

    単語数算出を二分木でやる - (void*)Pないと
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • ABA Games

    All games

    ABA Games
  • OpenGL入門 : WisdomSoft

    ここで紹介されるプログラムは Microsoft Windows XP で動作確認されています ソースは Borland C++ Compiler 5.5 を用いてコンパイルされています 解説は OpenGL Version 1.1 に準拠しています。 この講座は ANSI C/C++ 及び GUI プログラムの開発経験者を想定しています

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    pknight
    pknight 2009/08/18
  • C言語〜ゲームプログラミングの館〜

    ※ 更新履歴 ※ 2017/11/03 ・sp.8章追加 2017/10/11 ・配布しているプロジェクトをVisualStudio2017に更新(それにまつわる説明も更新) 2015/09/12 ・s.3章 Androidのようなボタンの作り方(C++) 追加 2013/09/02 ・VisualC++2012のプロジェクトを追加 2013/02/23 ・d3.5章追加 2013/02/20 ・d3.1章追加 ・d3.2章追加 ・d3.3章追加 ・d3.4章追加 2013/01/19 ・sp3章追加 ・sp4章追加 ・sp5章追加 ・sp6章追加 ・sp7章追加 2012/06/23 ・3.14章追加 2012/06/16 ・sp1節追加 ・sp2節追加 2012/02/11 ・d6節追加 2011/11/10 ・h11章追加 2011/10/31 ・s1章追加 ・s2章追加 2011/

    pknight
    pknight 2009/08/14
  • 低水準ファイル入出力関数を使おう - 68user's page

    低水準ファイル入出力関数 perl でプログラミングするにしても、 基礎知識としてC言語のファイルディスクリプタの概念を知っておくにこしたことはありません。 特に 4引数 select を使うときには、 ファイルディスクリプタの知識があると理解が早いでしょう。 C言語でファイルを扱うときは、一般的に fopen・fread・fwrite・fclose などの ライブラリ関数を使います。これらは stdio.h で宣言されており、 標準入出力ライブラリ (標準入出力関数) と呼ばれます。 ファイルをオープンするときは FILE *fp; fp = fopen("file.dat", "r"); として FILE 構造体を得ます。それに対して fread・fwrite を実行します。 しかし、これら fopen・fread などのライブラリ関数も、 内部では open・read・write・c

    pknight
    pknight 2009/08/13
  • http://www.cppll.jp/cppreference/index.html

  • Microsoft Learn: Build skills that open doors in your career

    Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situations through hands-on training personalized to your needs, at your own pace or with our global network of learning partners. Take training Find

    Microsoft Learn: Build skills that open doors in your career
    pknight
    pknight 2009/08/06
  • 本当はむずかしいハッシュテーブル - sumiiのブログ

    某所より自己転載。数え方にもよりますが、レベル1からレベル3まで、三つぐらい罠があります。(これは解説する予定はありませんが、他の方の解答・コメントは歓迎します。コメント、トラックバック、ブックマークはネタバレ有りです。念のため。) 次の内部ハッシュの実装(C言語のプログラムの一部)には誤りがある。誤っている部分を正しく修正せよ。ただし、Bはハッシュ表のサイズ、hashはハッシュ関数である。ハッシュ表の要素は正の整数とし、要素の個数はハッシュ表のサイズBより小さいとする。 #define EMPTY 0 int h[B]; /* ハッシュ表hを空にする */ void clear() { int i; for (i = 0; i < B; i ++) { h[i] = EMPTY; } } /* 要素xをハッシュ表hに追加 */ void insert(int x) { int i = h

    本当はむずかしいハッシュテーブル - sumiiのブログ
    pknight
    pknight 2009/07/30
    削除済みのフラグだけ立てておくだけにしないといないという話。insert時にまた再度格納すればいいのかな。あとmember関数ってハッシュテーブル全部埋まってたら無限ループになるんじゃ・・・。
  • C言語 に慣れた人が書く C++ のソース - Natural Software

    C++ のソースを見てると。この人普段 C言語がメインだな?と思うソースにお目にかかることが多い。 その人の傾向も並べてみる。 アスタリスクとかアンパサンドの位置が変数寄り C 言語がメインの人はポインタとか参照をこう書く char &r; char *p = &r; C++ の人はこう書く char& r; char* p = &r; 全体的に const がない 引数の型につける方の const がない 当然 const メンバ関数などない 定数は #defione 3文字が好き 変数は3文字。元が4文字でも3文字の変数 tmp とか cnt とか 変数を関数の先頭で宣言する 使うところで宣言しない。 void main() { int i; string str1, str2; for ( i = 0; i < 10; ++i ) { ごにょごにょ } ごにょごにょ str1 = "

    C言語 に慣れた人が書く C++ のソース - Natural Software
    pknight
    pknight 2009/07/27
    アスタリスクとかアンパサンドの位置が変数寄りにしてはいけない理由って何なんでしょうか。
  • ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改

    ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす

    ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改
    pknight
    pknight 2009/07/27
  • Rubyのハッシュテーブルの仕組みを徹底的に理解する - ザリガニが見ていた...。

    ハッシュとは 一般的に理解すると抽象的で分かり難くなってしまうが、ハッシュとは、あるデータから、一定の計算をして求めた、目的に沿った数値、と思っている。それでは、どのような目的に利用されるのか?自分の知識で考えてみた。 暗号化 webアプリケーション等で、パスワードをDBに保存する時、生のパスワードをハッシュに変換して保存する。 Digest::SHA1.hexdigest等で求めたハッシュから、元のデータを復元するのが非常に困難という特性を利用する。 保存しているパスワードハッシュが、たとえ漏洩したとしても、不正利用を防止できる。 パスワードを照合するときも、ハッシュに変換して、保存しているパスワードハッシュと一致するかどうかで判断する。 同等の確認 長い文字列データを比較する時、全ての文字が等しいかチェックするのは非常に時間がかかる。 しかし、長い文字列データをハッシュに変換しておき、

    Rubyのハッシュテーブルの仕組みを徹底的に理解する - ザリガニが見ていた...。
    pknight
    pknight 2009/07/16
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

    pknight
    pknight 2009/07/14
  • C言語で2次元配列を動的に割り当てる4つの方法 - FLYING

    2次元配列を動的割り当てしたいそんなとき,C言語ならキモくなるかも。 検索エンジンから来る人がそれなりに居るようなので,解説画像を追加しました(2014/12/05)。 各行のデータを保持する配列と各行へのポインタを保持する配列に分けて確保 おそらく最も基的なやり方。 int **matrix; int i, j, n, m; n = 100, m = 100; matrix = malloc(sizeof(int *) * n); for (i=0;i<n;i++) { matrix[i] = malloc(sizeof(int) * m); } for (i=0;i<n;i++) { for (j=0;j<m;j++) { matrix[i][j] = i * m + j; printf("%d\n", matrix[i][j]); } } for (i=0;i<n;i++) { f

    C言語で2次元配列を動的に割り当てる4つの方法 - FLYING
    pknight
    pknight 2009/07/14
    callocではダメなんだろうか。あとで調べよう。/何言ってんだ俺わ。
  • http://ch.cri-mw.co.jp/iwai/731.html

    pknight
    pknight 2009/07/13
  • Download Visual Studio 2005 Retired documentation from Official Microsoft Download Center

    All Microsoft Global Microsoft 365 Teams Copilot Windows Surface Xbox Deals Small Business Support Software Windows Apps AI Outlook OneDrive Microsoft Teams OneNote Microsoft Edge Skype PCs & Devices Computers Shop Xbox Accessories VR & mixed reality Certified Refurbished Trade-in for cash Entertainment Xbox Game Pass Ultimate PC Game Pass Xbox games PC and Windows games Movies & TV Business Micro

  • Cライブラリ関数に必要なヘッダファイルとプロトタイプ宣言の調べ方

    pknight
    pknight 2009/07/12