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

買ってきた。 ひとつはなんか網羅的にUnixプログラミング系の知識をつけたいなーと思ったから。Amazonの評価もよかったし。ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道作者: 青木峰郎出版社/メーカー: ソフトバンククリエ…

FizzBuzz かいてみた (Erlang)

なんかださい。 が、なんかとりあえず覚えたこと使ってみようかと思ったのでヨシとしよう。 -module(fizzbuzz). -export([fizzbuzz/1]). -export([fizzbuzz/2]). fizzbuzz(L) -> fizzbuzz(L, []). fizzbuzz([], R) -> lists:reverse(R); fizzbuzz([X|T], R) …

array_filter と create_function でクイックソート

まーPHP 5.2.x 系以前でこういうことやろうとすると当然create_functionなどというひどいものを使わないといけなかったり。つーか、配列の結合が、+ と array_merge のどっちつかうかは何年PHPつかってても身に付かんな。添字配列と連想配列が一緒くたに扱わ…

クラステンプレート

C++

#include <iostream> using namespace std; struct point { int x; int y; }; template<typename T>class base { private: T data; public: base(T); void set_data(T); T get_data(); }; template<typename T> base<T>::base(T d) { data = d; } template<typename T> void base<T>::set_data(T d) { data = d; }</t></typename></t></typename></typename></iostream>…

filter と lambda をつかったクイックソート

リスト内包を使わない場合以下のようなかんじか? #!/usr/bin/env python # -*- coding: utf-8 -*- def qsort(list): if len(list) == 0: return [] pivot = list.pop() return qsort(filter(lambda x: x < pivot, list)) + [pivot] + qsort(filter(lambda x…

リスト内包をつかったクイックソート Python編

#!/usr/bin/env python # -*- coding: utf-8 -*- def qsort(list): if len(list) == 0: return [] pivot = list.pop() return qsort([x for x in list if x < pivot]) + [pivot] + qsort([x for x in list if x >= pivot]) def main(): test_list = [2, 5, 3…

リスト内包をつかったクイックソート Erlang編

-module(qsort). -export([qsort/1]). qsort([]) -> []; qsort([Pivot|T]) -> qsort([X || X <- T, X < Pivot]) ++ [Pivot] ++ qsort([X || X <- T, X >= Pivot]). リスト内包をつかったときに、どういった処理を内部的におこなっているのかがきになる。

コンパイルとリンク

C C++

http://docs.sun.com/app/docs/doc/805-7886/6j7drf0sr?l=ja&a=view

マージソート

分割した要素を結合するときにはすでにミクロな集合内ではソートされていることが保証されているため線形時間で結合できる。というかんじ。 // merge_sort.c #include "merge_sort.h" void merge_sort(int *array, size_t size) { int div = (int)size/2, *l…

size_t

C

環境依存だとは思うけど、Mac OSX だと、 typedef unsigned long __darwin_size_t; /* sizeof() */ って定義されてた。@ppc/_types.h

クイックソート

クイックソートをC言語で書いてみたら思いのほか書けなくてびっくりした。。そしてへんこんだ。でもまあ、リハビリだと思いつつがんばる。あとあれ、マージソートとの違いは、分割前に並び替えちゃうのか、統治時に並び替えるのか、そこなのよね。 // qsort.…

配列とポインタ

C

そうそう、ものすごく基本的なところではあるけど。配列を関数の仮引数に指定したときってどうなるんだっけーってそんなネタあったよなーと思って。 #include <stdio.h> void print_size(int *size) { printf("--sizeof--\n"); printf("%d\n", sizeof(size)); printf(</stdio.h>…

じゃあどうすんの?

C++

次 ほかの型で使えるように汎用のテンプレート化 宣言と実装を分けてヘッダファイルつくってコンパイルしてリンク>めんどいのでMakefile書く インスタンスがコピーされるときどうする?ポインタでしか使えない? コピーしたら表面のqueueはディープコピーに…

C++速いなあ

C++

10,000,000のデータを2つのキューにひたすらつめこんで,ひたすらdeqした場合 % time ./a.out >/dev/null ./a.out > /dev/null 4.39s user 2.38s system 99% cpu 6.788 totalPHPのarray_pushとarray_shiftで同じようなことやってみたら,10000個くらいのデー…

キュー改良

C++

キュー - sotarokのお勉強 Exceptionの練習としてデータ範囲のチェックと,空のキューも使えるようにした.前回のキューだと1個以上データがないと使えないとかあった.一応,メモリリークしないことも確認した.valgrind使ってみた. http://kzk9.net/colum…

読了

C++

読み終えました. 最後の方のSTLの使い方とか具体的なコードの部分は多少読み飛ばしたけど.あとは実際に書きながらちょいちょい立ち戻ればい良いかな,と. C++実践プログラミング作者: スティーブオウアルライン,Steve Oualline,望月康司,クイープ出版社/…

delete後の扱い

C++

delete演算子がどう働くかいまいちわからない - sotarokのお勉強 だけど,あれは実行環境がMac OSXのほうで,(g++のバージョンは今は確認できない.帰ったら確認するかのう)CentOS 5.2の, % g++ --version g++ (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42) C…

まあ本もちゃんと読んでいたりはして

C++

でも最後の方になってきて、STLの使い方とかになるとまたちょっと飛ばし飛ばしってかんじだなあ。テンプレート使ってなにか定義してみるか。ああ、キューせっかく書いたから拡張させてみるか。。とか。。 で、一応488ページ。C++実践プログラミング作者: …

キュー

C++

でことで、前のエントリ通り、deleteの挙動がようわからんくて、どうすればちゃんと解放されんのかがいまいちわからないからdeqの部分が未完成なんだけどとりあえず書いてみた。 あとdeq時の範囲のチェックをしていない。。STLとか見たけど、STLのqueueは、…

delete演算子がどう働くかいまいちわからない

C++

newで動的に確保したメモリの解放をしたいわけなんだけど、delete演算子がいまいちなにしてるのかよくわからない。 delete演算子は、ポイントしてる先の確保領域を解放する? delete演算子は、ポインタ変数そのものを解放する? 不思議におもったのは、以下…

静的メンバ

C++

// klass_static.cpp #include <iostream> class klass_static { public: static int count; klass_static(); }; // 静的メンバの初期化はクラス定義の外で行う // そのときにはスコープ定義演算子 :: でアクセスする int klass_static::count = 0; klass_static::klas</iostream>…

プライベートな静的メンバへ静的メンバ関数でアクセス

C++

// klass_static_private.cpp #include <iostream> class klass_static { public: klass_static(); static int get_count(); private: static int count; }; // private でも初期化は外で int klass_static::count = 0; klass_static::klass_static() { count++; std::</iostream>…

自分自身のポインタを持つ

C++

// klass.cpp #include <iostream> class klass { public: const int c; klass *b; klass(); }; klass::klass() : c(1) { std::cout << "Hoge" << std::endl; } int main() { klass *a; a = new klass(); a->b = a; std::cout << a->b->b->b->b->c << std::endl; retur</iostream>…

だめだったリスト

C

http://d.hatena.ne.jp/strkpy/20090313/1236971227 ああーなんか変だなーとおもってたのは,これ,先頭要素の削除とかができないのかw 先頭もポインタにして書き換えないとだめだった.

Makefile

Makefile。それと、リンク。うーん。 //hello.c #ifndef _STDIO_H_ #include <stdio.h> #endif #include "hello_main.h" int main() { int count = 1; hello_main(count); return 0; } // hello_main.h void hello_main(int); // hello_main.c #ifndef _STDIO_H_ #inc</stdio.h>…

クラスとかさらに

C++

なんか結構罠が多い印象。つか罠だらけな気がするが。 継承 class Fuga : public Hoge { virtualで抽象クラス virtual hoge() = 0; 仮想クラスとかつかえばFactory的なことできそうなかんじ? デストラクタをvirtualで宣言すると、base::constractor , sub::…

うちの教授も訳に参加してた。で、まあmumumuさんにすすめられたからおもむろに研究室を探してみたところ2冊も見つかった。適当に借りてきた。 アルゴリズムC++作者: ロバートセジウィック,Robert Sedgewick,野下浩平,佐藤創,星守,田口東出版社/メーカー: …

リスト

C

なんかなにも整理されてないけどとりあえず。特にfindあたりがひどい。つかinsertもひどいか。。deleteもひどいな。つか全部ひどいか。。。まあなんつーかそうだよねーってかんじだけど。。あーなんだかなー。まあなんていうかポインタあたりの復習にはなっ…

演算子のオーバーロード

C++

きもすぐる。でもすげーな。 というわけでここ最近あまりまじめに読み進んでいないですが、ボチボチ読んでいます。379ページです。 C++実践プログラミング作者: スティーブオウアルライン,Steve Oualline,望月康司,クイープ出版社/メーカー: オライリージ…

今日はあんますすまなかった

C++

やぱ寝坊すると一日のやる気がそがれる・・・。いかんなあ。 てことで今341ページ。 デバッガの使い方と配列->ポインタで扱うチューニングについて。 C++実践プログラミング作者: スティーブオウアルライン,Steve Oualline,望月康司,クイープ出版社/メーカー…