本書の内容に誤りがございました。次のとおり訂正してお使いください。
お手元の書籍の刷数は、奥付でご確認ください。

初版1刷~初版2刷

訂正箇所 訂正内容

p.42
03-double.cppの上

(誤) 小数点以下が0でないような数

(正) 実数(の一部)

p.42
下から6行目

(誤) 常に近似値

(正) ほとんどの場合近似値

p.43
脚註2

(誤) だけです

(正) だけだからです

p.44
上から5行目

(誤) 結果はすべて同じになります

(正)  すべて同じ結果になります

p.44
上から11行目

(誤) 3番目の記法を使うことにします

(正) 3番目 と4番目の記法を使うことにします (10.5節を参照)

p.44
中央付近

(誤) 宣言や定義もできません

(正) 定義もできません

p.46
コラムの下から4行目

(誤) 付けることはとても大切なことです

(正) 付けることが大切です

p.47
本文下から9行目

(誤) 引用符自体も1文字なので、「\'」で表現できます

(正) 引用符自体も1文字ですが、「\'」という2文字で表現します

p.49
脚註10

(誤) この例では、int* pAとして…代入しています。このように、

(正) int* pAとして…代入するように、

p.49
脚註10

(誤) 宣言時に

(正) 定義時に

p.49
脚註10

(誤) 宣言しただけで

(正) 定義しただけで

p.49
脚註10

(誤) 宣言しただけで

(正) 定義しただけで

p.53
下から6行目

(誤) 除算では

(正) 整数同士の除算では

p.55
脚注11

(誤) a == 0ではなく0 == aを書くようにしていれば、間違って0 = a

(正) a == 3ではなく3 == aを書くようにしていれば、間違って3 = a

p.57
1番目のサンプルコード

(誤) int c = 5;// 2進数の101

(正) int c = 5;//2進数の101

p.58
上から10行目

(誤) 演算子の左右

(正) 代入演算子の左右

p.62
3.2.12項の1行目

(誤) 常に近似値

(正) 近似値

p.63
下から10行目

(誤) 正確には0x1.999999999999a×(16の-4乗)

(正) 正確には0x1.999999999999a×(2の-4乗)

p.69
一番下のコードサンプル

(誤)
 
cout << (*q).real() << endl;//出力値3(冗長)
cout << (*q).real() << endl;//出力値4(冗長)

(正)
 
cout << (*q).real() << endl;//出力値3(冗長)
cout << (*q).imag() << endl;//出力値4(冗長)

p.71
図3-4

(誤) complex<double> a;

(正) cplx a;

p.72
3.4.5項の7行目

(誤)  <memory>で定義されています

(正)  <memory>で宣言されています

p.95
3.4.5項の7行目

(誤) 本書の中では

(正) 本書では

p.98
上から4行目

(誤) 約数の数が

(正) 数nの約数の数が

p.112
5.4.1項の4行目

(誤) 名前空間(5.3.2項)

(正) 名前空間(5.4.2項)

p.117
本文下から12行目

(誤) NUMBER_Hが定義されている場合のみ有効になります

(正) NUMBER_Hが定義されていない場合のみ有効になります

p.123
06-reserve.cpp

1行目に「const int n = 20;」を挿入

p.125
10行目

(誤) 同じ結果に同じ結果に

(正) 同じ結果に

p.125
06-matrix.cpp

(誤)
cout << v.size() << endl; //出力値(行数)
cout << v[0].size() << endl;//出力値(列数)

(正)
cout << v.size() << endl; //出力値:2(行数)
cout << v[0].size() << endl;//出力値:3(行数)

p.127
コードサンプルの下から6~7行目

(誤)
g3(v1)
cout << v1[0] << endl; //出力値:1000(g2での変更が反映された)

(正)
g3(v1)
cout << v1[0] << endl; //出力値:1000(g3での変更が反映された)

p.134
脚注9

(誤) 緩和されていて、GNU C++やClangでは

(正) 緩和されています。C++でも、GNU C++やClangなら

p.231
表10-2のキャプション

(誤) 太線

(正) 太字

p.264
コードサンプルの下から9~10行目

(誤)
primes.push_back(2);//2と
primes.push_back(2);//3は入れておく

(正)
primes.push_back(2);//2と
primes.push_back(3);//3は入れておく

初版1刷

訂正箇所 訂正内容

p.54
下から3~2行目

(誤) aとbが数値のとき、a > bはaがbより大きいとき、a > = bはaがb以上のとき、a < bはaがbより小さいとき、a < = bはaがb以下のとき、a = = bはaとbが等しいとき、a! = bはaとbが等しくないときにtrue になります。

(正) aとbが数値のとき、a > bはaがbより大きいとき、a >= bはaがb以上のとき、a < bはaがbより小さいとき、a <= bはaがb以下のとき、a == bはaとbが等しいとき、a! = bはaとbが等しくないときにtrue になります。

p.55
上から8~12行目

(誤) xが0から100までの間にあることを調べたいときに、0 < = x < = 100と書くのは間違いです。この式は、(0 <= x) < = 100のように解釈されます。(0 < = x)の評価結果はtrueあるいはfalseになります。true < = 100やfalse < = 100を評価する際には、trueは1、falseは0に変換されるため(暗黙の型変換)、いずれの場合にも全体の評価結果はtrueになります。この場合には、次に説明する論理演算子を使って、0 < = x && x < = 100と書かなければなりません。

(正) xが0から100までの間にあることを調べたいときに、0 <= x <= 100と書くのは間違いです。この式は、(0 <= x) <= 100のように解釈されます。(0 <= x)の評価結果はtrueあるいはfalseになります。true <= 100やfalse <= 100を評価する際には、trueは1、falseは0に変換されるため(暗黙の型変換)、いずれの場合にも全体の評価結果はtrueになります。この場合には、次に説明する論理演算子を使って、0 <= x && x <= 100と書かなければなりません。

p.55
脚注の1行目

(誤) a = = 0ではなく0 = = a を書くようにしていれば、

(正) a == 0ではなく0 == a を書くようにしていれば、

p.77
図4-2のひし形の中

(誤) n%2= =1?

(正) n%2==1?

p.79
図4-3のひし形の中

(誤) n%2= =1?

(正) n%2==1?

p.127
上から12行目

(誤) //出力値:1000(f2での変更が反映された)

(正) //出力値:1000(g2での変更が反映された)