メモリ

common lispにおけるスコープの考察

(setf x 'outside) ;=>outside ;letはparallelに値を束縛する. (let ((x 'inside) (y x)) ;x => outside (list x y)) ;=>(inside outside) ;let*は逐次値を束縛する. (let* ((x 'inside) (y x)) ;x => inside (list x y)) ;=>(inside inside) (list y) ;=>…

ポインタ(多次元配列)の復習

char *p[4] = {"hogehiu", "jijkan", "ahbcd", "oiutui"} //OK 要素数が4になっていさえすれば、後は自動的に空間を確保してくれる. char (*p)[4] = {"hiu", "abv", "bin", "kon", "ggg", "zzn", "con", "com"}; // string *str[4] = {"aaa", "bbb", "ccc",…

文字列の操作いろいろ

Boyer-Moore法 void table(char *key) { int len = strlen(key); fill(skip, skip+CHAR_SET, len); for(int i = 0; i len-1; i++) { skip[key[i]] = len-1-i; } } //位置取得。戻り値はインデックス int search(char* text, char* key) { int textlen = strl…

newとdelete 配列編

要素数のわからない配列を入力したいとき int main() { int n; cin >> n; int *arr = new int[n]; //int arr = new int[n];では失敗する。 for(int i = 0; i > arr[i]; } delete arr; }

参照とアドレスの実験

int main() { int a; a = 1; //なくても、エラーは出ない。 cout int main() { int &a; //参照が初期化されずに宣言されています。 cout int main() { int b = 5; int &a = b; //直接数値を代入するとエラー cout int main() { int b = 5; int &a = b; //箱…

参照渡しについて。

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