2010-12-07 4 views
1

私はC++で新しいデータ構造を設計するたびに、ポインタ、参照、constnessでいくつかの問題を抱えています。 advanve ジョンマイヤーズのPSの本は、その良い選択ですか?コンテナの設計についてのヒント

+0

あなたはどのような容器を設計していますか?そうすることで何を達成することを望みますか?標準ライブラリにはすでにいくつかの有用なものが用意されています。これらは、私たちが通常コンピュータ科学の「コンテナ」として考えるものの基盤をカバーしています。 –

+0

@Karl Knechtel:わかりやすい原則を理解したいのですが、それがどういう仕組みなのか、私は尋ねています。あなたが良いプログラマになりたいのであれば、物事がどう働いているのか理解していなければなりません。 – rookie

+1

ものを再実装することは、必ずしもそれらを理解する最善の方法ではありません。標準実装がどのように動作するかについての詳細な説明を読むことをお勧めします。 –

答えて

1

STLがNcolai M. Josuttisの "The C++ Standard Library:A Tutorial and Reference"でどのように実装されているかについての詳細な説明があります。

マイヤーの効果的なSTLは、包括的ではありませんが、コンテナに関するセクションがあります。

+0

Dans:ありがとう、ちょうど私が探していたもの! – rookie

0

Scott MeyersのEffective C++は、一般的なC++の魔法のための優れたリソースであり、クラスの設計についての素晴らしい議論をしていますが、彼の "より効果的なC++"は、について話す。それは、参照カウント、コピーオンライトなどのクラス設計の概念について多くのことを話しています。あなたが探しているもののために少し進んでいるかもしれませんが、おそらく上級クラスの設計の最善のイントロです。

また、ハーブ・サッターの「Exceptional C++」が良いかもしれないと思います。私はそれが文字列クラスの設計についてかなり良い議論をしていることを知っています、そして、その1つの例は非常に有用であり、私は他のすべての上にそれを推薦するでしょう。その議論is also available online、あなたがそれを見つけたら便利です。

これらの両方の議論は、データ構造の周りの良い抽象化を設計する仕組みに関するものですが、一般的なデータ構造についてはあまり話しません。そこにはたくさんの魅力的なデータ構造があります。独自の構造を実装しようとする前に、その中のいくつかを実際に見ておくとよいでしょう。私は個人的には、知られているデータ構造を取り、コーディングすることでクラス設計について多くのことを学ぶことができると思っていますが、これはコード作成の方法を学ぶ最適な方法ではないと認めています。赤い黒色ツリー、二項ヒープ、Bツリー、分離した集合フォレスト、フィボナッチヒープなどの楽しいデータ構造を見たい場合は、「Introduction to Algorithms、3rd Cormen、Leisserson、Rivest、およびSteinの「Edition」を参照してください。これは広くアルゴリズムの最高のテキストの1つと考えられていて、十分な擬似コードを持っているので、良いデータ構造を書きたい場合は、ここで十分なヒントを見つけることができます。これらの構造は、上記の本と組み合わせて、あらゆる種類の情報を持つ必要があります。多くの読書が許されていますが、データ構造を理解することができれば、データ構造の恩恵を受けることができます。

希望すると便利です。

+0

マイヤーズのSTLはどうしたらいいですか? – rookie

関連する問題