Skip to content

Commit 3d9f37a

Browse files
見落としの修正
1 parent 3a83118 commit 3d9f37a

23 files changed

+36
-37
lines changed

007-standard-input.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ $ ./program
278278
hello
279279
~~~
280280

281-
リダイレクトを使えば、この出力先をファイルにできる。リダイレクトを使うには`"プログラム \> ファイル名"`とする
281+
リダイレクトを使えば、この出力先をファイルにできる。リダイレクトを使うには`"プログラム \> ファイル名"`とする
282282

283283

284284
~~~
@@ -305,7 +305,7 @@ int main()
305305
}
306306
~~~
307307

308-
このプログラム名を`bmi`として、通常通り実行すると以下のようになる
308+
このプログラム名を`bmi`として、通常どおり実行すると以下のようになる
309309

310310
~~~
311311
$ ./bmi

008-loop.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ loop :
147147

148148
1. 関数`hello`が呼ばれる
149149
2. `goto`文でラベル`loop`まで飛ぶ
150-
3. 1に戻る
150+
3. 1.に戻る
151151

152152
という処理を行う。
153153

@@ -641,7 +641,7 @@ int main()
641641
}
642642
~~~
643643

644-
重要なのは以下の4行だ
644+
重要なのは以下の5行だ
645645

646646
~~~cpp
647647
while( true )

013-names.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,7 @@ int main()
681681
~~~cpp
682682
namespace ns
683683
{ // 名前空間スコープの始まり
684-
} // 関数スコープの終わり
684+
} // 名前空間スコープの終わり
685685

686686
void f()
687687
{ // 関数スコープの始まり

014-iterator.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ int main()
295295
}
296296
~~~
297297

298-
`関数output_all`のコードは何も変えていないのに、さまざまなイテレーターに対応できる。イテレーターというお作法に乗っ取ることで、さまざまな処理が可能になるのだ。
298+
`関数output_all`のコードは何も変えていないのに、さまざまなイテレーターに対応できる。イテレーターというお作法にのっとることで、さまざまな処理が可能になるのだ。
299299

300300
これは出力にも言えることだ。`関数output_all``std::cout`に出力していた。これをイテレーターに対する書き込みに変えてみよう。
301301

015-reference.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ int main()
237237
// constの付いている型のオブジェクト
238238
const int x = 0 ;
239239

240-
// エラー、constがない
240+
// エラー、constがない
241241
int & ref = x ;
242242

243243
// OK、constが付いている

018-class.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ int main()
159159
~~~cpp
160160
struct S
161161
{
162-
// これは変数ではない
162+
// これは変数ではない
163163
int data ;
164164
} ;
165165
~~~

021-three-virtues-of-a-programmer.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616

1717
傲慢
1818

19-
: ゼウスも罰したもう過剰なまでの奢り。他人がそしりを入れられぬほどのプログラムを書く推進剤。これがプログラマーの第三の美徳である。
19+
: ゼウスも罰したもう過剰なまでの驕り。他人がそしりを入れられぬほどのプログラムを書く推進剤。これがプログラマーの第三の美徳である。
2020

2121
これから学ぶ`array`を実装するためのC++の機能を学ぶときに、このプログラマーの三大美徳のことを頭に入れておこう。

023-template.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ struct array_double_1
3939
double storage[1] ;
4040
double & operator []( std::size_t i )
4141
{ return storage[i] ; }
42-
}
42+
} ;
4343

4444
// array_double_2, array_double_3, ...
4545
~~~

025-array-iterator.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ int main()
469469
std::cout << ++i ; // 1
470470
// 後置
471471
std::cout << i++ ; // 1
472-
std::cout << i // 2
472+
std::cout << i ; // 2
473473
}
474474
~~~
475475

026-exception.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ reference array::operator [] ( std::size_t i )
2828
if ( i >= size() )
2929
{
3030
// エラー検出
31-
// しかし何をreturnすればいいのだろう
31+
// しかし何をreturnすればいいのだろう
3232
}
3333

3434
return storage[i] ;

030-pointer-details.md

-1
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,6 @@ int main()
622622
確かめてみよう。
623623
624624
~~~cpp
625-
626625
struct Object
627626
{
628627
int x = 123 ;

031-iterator-operations.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ void f( OutputIterator i, typename OutputIterator::value_type v )
364364
template < typename OutputIterator >
365365
void f( OutputIterator i )
366366
{
367-
// 意味がない
367+
// 意味がない
368368
auto value = *i ;
369369
}
370370
~~~
@@ -1398,7 +1398,7 @@ std::advance(i, 0) ;
13981398
13991399
`n`が正数の場合は前方(`i+1`の方向)に、`n`が負数の場合は後方(`i-1`の方向)に、それぞれ`n`回移動させる。
14001400
1401-
`advance(i,n)`はi自体が書き換わる
1401+
`advance(i,n)`は`i`自体が書き換わる
14021402
14031403
~~~cpp
14041404
i ; // n番目を指す

033-vector-implementation.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ class vector
561561
{
562562
public :
563563
using allocator_type = Allocator ;
564-
}
564+
} ;
565565
~~~
566566

567567
`size_type`は要素数を表現する型だ。

034-vector-memory-allocation.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,9 @@ int main()
397397

398398
まとめよう。
399399

400-
1. すでに指定された要素数以上に予約されているなら何もしない
401-
2. まだ動的メモリー確保が行われていなければ動的メモリー確保をする
402-
3. 有効な要素がある場合は新しいストレージにコピーする
400+
1. すでに指定された要素数以上に予約されているなら何もしない
401+
2. まだ動的メモリー確保が行われていなければ動的メモリー確保をする
402+
3. 有効な要素がある場合は新しいストレージにコピーする
403403

404404
古いストレージから新しいストレージに要素をコピーするとき、古いストレージと新しいストレージが一時的に同時に存在しなければならない。
405405

@@ -486,7 +486,7 @@ void reserve( size_type sz )
486486
{
487487
destroy( &*riter ) ;
488488
}
489-
// scope_exitによって自動的にストレージが破棄される
489+
// scope_exitによって自動的にストレージが破棄される
490490
}
491491
~~~
492492
@@ -584,9 +584,9 @@ int main()
584584

585585
まとめると`resize`は以下のように動作する。
586586

587-
1. 現在の要素数より少なくリサイズする場合、末尾から要素を破棄する
588-
2. 現在の要素数より大きくリサイズする場合、末尾に要素を追加する
589-
3. 現在の要素数と等しくリサイズする場合、何もしない
587+
1. 現在の要素数より少なくリサイズする場合、末尾から要素を破棄する
588+
2. 現在の要素数より大きくリサイズする場合、末尾に要素を追加する
589+
3. 現在の要素数と等しくリサイズする場合、何もしない
590590

591591
実装しよう。
592592

035-copy.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ int main()
4747
}
4848
~~~
4949

50-
これはまず`z = 0`が評価される。変数`z`の値は`0`になり、式を評価した結果の値は`z`へのlvalueリファレンスだ。なので、`y = z = 0`というのは、`y = (z=0)`となる。`z=0`については`z`であるので、`y = z`となる。ここでの`z``0`を代入されたあとの`z`なので、値は`0`だ。その結果変数`y`の値は`0`になる。変数`x`の場合も同様だ。
50+
これはまず`z = 0`が評価される。変数`z`の値は`0`になり、式を評価した結果の値は`z`への`lvalue`リファレンスだ。なので、`y = z = 0`というのは、`y = (z=0)`となる。`z=0`については`z`であるので、`y = z`となる。ここでの`z``0`を代入されたあとの`z`なので、値は`0`だ。その結果変数`y`の値は`0`になる。変数`x`の場合も同様だ。
5151

5252
以下のような例も見てみよう。
5353

036-move.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public :
204204

205205
// コピーコンストラクター
206206
dynamic_array( const dynamic_array & r ) ;
207-
}
207+
} ;
208208
~~~
209209
210210
このクラスのコピーコンストラクターの定義は以下のように書ける。

037-rvalue-reference.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ int main()
250250
{
251251
X x{} ;
252252
int && r = static_cast<X &&>(x).data_member ;
253-
} ;
253+
}
254254
~~~
255255
256256
+ 式`.*`で最初のオペランドが`xvalue`で次のオペランドがデータメンバーへのポインターの場合
@@ -281,7 +281,7 @@ int main()
281281
// lvalueなオブジェクト
282282
int lvalue { } ;
283283

284-
// OK、lvalueリファレンスはlvalueで初期化できる
284+
// OK、lvalueリファレンスはlvalueで初期化できる
285285
int & l_ref = lvalue ;
286286

287287
// OK、rvalueリファレンスはrvalueで初期化できる

041-move-support.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public :
166166
{
167167
*ptr = -*ptr ;
168168
}
169-
}
169+
} ;
170170
~~~
171171

172172
幸い、クラス`Integer`はムーブコンストラクターを実装しているので、

042-string-intro.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ int main()
675675
// 少なくともchar [5]を格納できるだけのストレージを動的確保する
676676
std::string hello("hello") ;
677677
// helloが破棄される
678-
// デストラクターはストレージを解放する
678+
// デストラクターはストレージを解放する
679679
}
680680
~~~
681681

043-random.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ $$X_3 = 3 \times X_2 + 5 \bmod 2^{32}-1 = 65$$
4646

4747
`乱数エンジン`は生の乱数を生成するライブラリだ。クラスで実装されている。
4848

49-
乱数エンジンはメンバー関数`min()`で最小値を、メンバー関数`max()`で最大値を、`operator()`で最小値から最大値の間の乱数を返す
49+
乱数エンジンはメンバー関数`min()`で最小値を、メンバー関数`max()`で最大値を、`operator()`で最小値から最大値の間の乱数を返す
5050

5151
~~~cpp
5252
template < typename Engine >
@@ -442,7 +442,7 @@ int dice( Engine & e )
442442
443443
1. 3bitの生の乱数rを得る
444444
2. `r`が$0 \leq r \leq 5$なら``r`+1'が分布された乱数
445-
3. それ以外の場合、1に戻る
445+
3. それ以外の場合、1.に戻る
446446
447447
これを実装すると以下のようになる。
448448
@@ -925,7 +925,7 @@ auto lootbox( Engine & e )
925925
+ 6面ダイスを1の目が出るまで振った回数
926926
+ 確率1%で当たるくじ引きをアタリが出るまで引いた回数
927927

928-
コイントスの例で考えよう。コイントス1回をベルヌーイ試行とし、成功を表とする。表が出るまでコイントスをしてみよう。コイントスを何回する必要があるだろうか。運がよければ1回で表がでるので1回だ。運が悪ければ、5回コイントスをしても全部裏なこともあるだろう。100回コイントスをして表が一度も出ないことは、確率的にはあり得る。ただしその確率は$\frac{1}{2^{100}}$なので、およそあり得ない確率ではある。
928+
コイントスの例で考えよう。コイントス1回をベルヌーイ試行とし、成功を表とする。表が出るまでコイントスをしてみよう。コイントスを何回する必要があるだろうか。運がよければ1回で表が出るので1回だ。運が悪ければ、5回コイントスをしても全部裏なこともあるだろう。100回コイントスをして表が一度も出ないことは、確率的にはあり得る。ただしその確率は$\frac{1}{2^{100}}$なので、およそあり得ない確率ではある。
929929

930930
`std::geometric_distribution<IntType>``IntType`型の乱数$i$, $i \geq 0$を以下の離散確率関数に従って分布する。
931931

@@ -1020,7 +1020,7 @@ unsigned int try_lootboxes( Engine & e )
10201020
10211021
負の二項分布(negative binomial distribution)は幾何分布に似ている。幾何分布がベルヌーイ試行が1回成功するまでに行ったベルヌーイ試行の回数を乱数として分布するのに対し、負の二項分布はベルヌーイ試行が$k$回成功するまでに行ったベルヌーイ試行の回数を乱数として分布する。
10221022
1023-
負の二項分布を具体的な例で考えよう
1023+
負の二項分布を具体的な例で考えよう
10241024
10251025
+ コイントスを、10回、表が出るまで行った回数
10261026
+ 6面ダイスを、10回、1の目が出るまで振った回数

046-random-part4.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -361,15 +361,15 @@ int main()
361361

362362
#### 簡単な説明
363363

364-
区分線形分布(piecewise linear distribution)は区分定数分布と同じく、区間と確率(又の名を密度、ウエイト)を指定する。
364+
区分線形分布(piecewise linear distribution)は区分定数分布と同じく、区間と確率(またの名を密度、ウエイト)を指定する。
365365

366366
区間の指定は区分定数分布と同じだ。内部境界の集合で指定する。例えば`{1.0, 2.0, 3.0}`は2つの区間`[1.0, 2.0)``[2.0, 3.0)`を指定する。
367367

368368
区分線形分布における確率は、区間に対してではなく、内部境界に対して指定する。指定した全区間における値の出現確率は、内部境界から内部境界に向かって指定した確率の差の方向に線形に増加、もしくは減少する。
369369

370370
例えば区分`{0.0, 1.0}`と確率`{1.0, 2.0}`を指定した場合、これは1つの区間`[0.0, 1.0)`について、内部境界`0.0`の確率は$\frac{1}{3}$、内部境界`1.0`の確率は`\frac{2}{3}`とし、$0.0 \leq x < 1.0$の範囲の乱数`x`を生成する。内部境界区間の範囲に注意。`1.0`未満なので、`1.0`は出ない。
371371

372-
そして、区間の間の値は、区間を区切る2つの内部境界の確率の差によって、線形に増加、もしくは減少する。例えば値`0.25`が出る確率は$\frac{1.25}{3}$、`0.5`が出る確率は$\frac{1.5}{3}$、値`1.75`がでる確率は$\frac{1.75}{3}$だ。
372+
そして、区間の間の値は、区間を区切る2つの内部境界の確率の差によって、線形に増加、もしくは減少する。例えば値`0.25`が出る確率は$\frac{1.25}{3}$、`0.5`が出る確率は$\frac{1.5}{3}$、値`1.75`が出る確率は$\frac{1.75}{3}$だ。
373373

374374
区分`{0.0, 1.0, 2.0}`と確率`{1.0, 2.0, 1.0}`の場合、2つの区間`[0.0, 1.0)``[1.0, 2.0)`の範囲について、`0.0`から`1.0`に向かう区間についての確率は$\frac{1}{4}$から$\frac{1}{2}$に増加し、`1.0`から`2.0`に向かう区間についての確率は$\frac{1}{2}$から$\frac{1}{4}$に減少する。
375375

300-multiple-source-files.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ inline void print_int( int x )
434434
#include "library.h"
435435
~~~
436436

437-
`inline`はODRを例外的に回避できるとは言え、強い制約がある。
437+
`inline`はODRを例外的に回避できるとはいえ、強い制約がある。
438438

439439
1. 異なる翻訳単位に限る
440440

400-gdb.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ Breakpoint 3, main () at main.cpp:5
195195
$2 = 10
196196
~~~
197197

198-
値は`10`だ。GDBは`print`の結果の履歴を記録している。`$1``$2`というのはその記録を参照するための名前だ。その値は`print`コマンドで確認できる
198+
値は`10`だ。GDBは`print`の結果の履歴を記録している。`$1``$2`というのはその記録を参照するための名前だ。その値は`print`コマンドで確認できる
199199

200200
~~~
201201
(gdb) print $1

0 commit comments

Comments
 (0)