スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「C++実践プログラミング」を借りてみた

大学の図書館で、 「C++実践プログラミング」という本を借りてみました。

【参考画像】
C++実践プログラミング

表紙には動物の絵が載ってる、比較的有名なシリーズですね。
"オライリー本"と呼称されたりするらしい)


大学の図書館は、さりげなく色々な本が置いてあって役に立ちます。
今後も本をあさくろうと思います。
(但し、発行日が1990年代など若干古いのが たまにキズ)


で、この借りた本の感想ですが、
専門的な事に突っ込むのではなく、基本的な事を根本からしっかり理解させるという
感じがしました。

「このプログラムは誤りがあります。考えてみてください。」のような問題が
多くあり、原因・理由を考えさせる、みたいな。

そして、この本には基本的な事(自分が知っている事)が多かったのですが、
知らなかった事もあった ので大変 勉強になりました。

例えば、
"圧縮構造体"なんて、今まで知りませんでしたよ。

普通の構造体
--------------------------------------
typedef struct _TEST{
unsigned int x;
unsigned int y;
unsigned int z;
}TEST;
--------------------------------------

圧縮構造体
--------------------------------------
typedef struct _TEST{
unsigned int x:1;
unsigned int y:1;
unsigned int z:1;
}TEST;
--------------------------------------
※それぞれの変数x、y、zを、1ビットで使いますよとコンパイラに教えている。

こうすれば使用領域を減らせるとか何とか。
(しかし、処理速度が遅くなるので、
        容量の問題が発生しない限り使わないほうが良いらしい)


思ったのですが、
参考書によって取り扱ってたり、取り扱ってなかったりする事柄が色々とありますね。
量が多くなってもいいので、完全網羅した参考書があったらいいなーとか思いました。
スポンサーサイト

テーマ : 日記 - ジャンル : 日記

コメント

圧縮構造体

 圧縮構造体、初耳です。ググッても出てこないですね。
 つまるところビットフィールドですね。C++というより元々 Cにある機能です。
 昔 40KBくらいの領域に 100人分のいろんなデータを入れるときに使った覚えがあります。

 遅いと言えば遅いですが、GHzクラスの環境なら全く気にするほどではないでしょう(そんな環境ならビットフィールド使ってまでサイズを減らす理由もないですが)。

 むしろコンパイラ毎にビットフィールドがどうメモリに割り当てられるかがコンパイラによって不定なので、パディングだったりスレッドセーフだったりとそっちの方が問題としては大きいです。

>完全網羅した参考書
 ISOとか JISの規格書は完全に網羅されていますが、それ以外だと(完全網羅と言えるかどうか確かではないですが)開発者本人が書いた「プログラミング言語C++ 第3版」か「C++プライマー 第4版」ってところでしょうか。

No title

自分も"圧縮構造体"で検索してみたんですけど、
全然出てきませんでした。
もしかすると、本書の中だけの便宜上の呼び方なのかもしれません。
(英訳が"packed structure"となっているのですが、これも検索しても出てこなかったです)

あと 圧縮構造体の他の用途としては、ビット単位のフラグ管理が分かりやすくなるとか。
(分かりやすく感じるかどうかは、人によると思いますが)
------------------------------------------
struct Status {
int error:1;
int framing_error:1;
int parity_error:1;
int carrier_lost:1;
int channel_dow:1;
};
------------------------------------------
(各ビットに別々の変数名をつけている)


パディング等は面倒ですねv-292
パディングに関してはパッドバイトを明示的に指定する対処法もあるみたいですが、
-------------------------------------------------------
struct Test {
char flag;
char pad //使用しない変数
int value;
}
-------------------------------------------------------
これも万能ではないようです。

そして、参考書の紹介 有り難う御座います!
どちらも若干 高いですが、購入を考えてみようと思いますv-290
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。