« バルサンしたよ。 | Main | 末尾最適化の本 »

2007.08.17

C++のvector

空き時間を利用して、C++の勉強。ずばり言うとトイレの中でしかC++の勉強ができない。一日とは言わんが、今日は夕方から全部STLの勉強の時間、みたいな時間の使い方をしてみたい。

C++ 入門書の次に読む本を読んでいて驚く。

・push_back()した時点で、C言語のrealloc()相当が走る可能性があるので、ポインターやイテレータは無効になる。

なんじゃそりゃー。って、内部でやっていることを考えたら当たり前なんだけど、全然意識していなかった。

あとは、[]だと配列の範囲チェックをしないけど、at()ならチェックをする。オーバーヘッドが極小の[]と、安全なat()の両方を用意しておいて、デフォが危険な方(C言語と同じ方)に振ってあるのがいかにもC++っぽい。僕はat()を使うことにする。back_inserterは領域を確保してコピーするんじゃなくて、ケツに突っ込む。アッーーー。removeとか存在意義がわからん。sortアルゴリズムには、普通に(lambda (foo& l, foo& r) (return l->baa > r->baa))って渡したい。そういえば、vectorに俺様クラスを乗せる話って、Accelerated C++に手取足取り書いてあった気がする。もう一回読むか。あんまり、idiomばかり覚えようとせずに、STLとかTemplateそのものも勉強しないといけないな。vectorか、stringの実装も追った方がよさげ。

C++の勉強で何が萎えるかというと、勉強したことがC++以外で役に立つとは思えない事。

C++ Templatesの目次をぱらぱらとみていたら、「Part2: Templates in Depth」が、 Templates in Deathに見えた。

|

« バルサンしたよ。 | Main | 末尾最適化の本 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/16142866

Listed below are links to weblogs that reference C++のvector :

« バルサンしたよ。 | Main | 末尾最適化の本 »