私はC++で新しいデータ構造を設計するたびに、ポインタ、参照、constnessでいくつかの問題を抱えています。 advanve ジョンマイヤーズのPSの本は、その良い選択ですか?コンテナの設計についてのヒント
答えて
STLがNcolai M. Josuttisの "The C++ Standard Library:A Tutorial and Reference"でどのように実装されているかについての詳細な説明があります。
マイヤーの効果的なSTLは、包括的ではありませんが、コンテナに関するセクションがあります。
Dans:ありがとう、ちょうど私が探していたもの! – rookie
Scott MeyersのEffective C++は、一般的なC++の魔法のための優れたリソースであり、クラスの設計についての素晴らしい議論をしていますが、彼の "より効果的なC++"は、について話す。それは、参照カウント、コピーオンライトなどのクラス設計の概念について多くのことを話しています。あなたが探しているもののために少し進んでいるかもしれませんが、おそらく上級クラスの設計の最善のイントロです。
また、ハーブ・サッターの「Exceptional C++」が良いかもしれないと思います。私はそれが文字列クラスの設計についてかなり良い議論をしていることを知っています、そして、その1つの例は非常に有用であり、私は他のすべての上にそれを推薦するでしょう。その議論is also available online、あなたがそれを見つけたら便利です。
これらの両方の議論は、データ構造の周りの良い抽象化を設計する仕組みに関するものですが、一般的なデータ構造についてはあまり話しません。そこにはたくさんの魅力的なデータ構造があります。独自の構造を実装しようとする前に、その中のいくつかを実際に見ておくとよいでしょう。私は個人的には、知られているデータ構造を取り、コーディングすることでクラス設計について多くのことを学ぶことができると思っていますが、これはコード作成の方法を学ぶ最適な方法ではないと認めています。赤い黒色ツリー、二項ヒープ、Bツリー、分離した集合フォレスト、フィボナッチヒープなどの楽しいデータ構造を見たい場合は、「Introduction to Algorithms、3rd Cormen、Leisserson、Rivest、およびSteinの「Edition」を参照してください。これは広くアルゴリズムの最高のテキストの1つと考えられていて、十分な擬似コードを持っているので、良いデータ構造を書きたい場合は、ここで十分なヒントを見つけることができます。これらの構造は、上記の本と組み合わせて、あらゆる種類の情報を持つ必要があります。多くの読書が許されていますが、データ構造を理解することができれば、データ構造の恩恵を受けることができます。
希望すると便利です。
マイヤーズのSTLはどうしたらいいですか? – rookie
- 1. ウェブサイトの再設計のヒント
- 2. プロパティの設計のヒント?
- 3. クロスプラットフォームのアプリUXの設計のヒント
- 4. Webアプリケーションのデータベース設計のヒント
- 5. 重いクライアントが必要システム設計とアーキテクチャ設計のアイデアと回答/ヒント
- 6. Androidのユーザーインターフェイスの設計について
- 7. データベースの設計について
- 8. ルールシステムの設計に関する参考資料/ヒント
- 9. いくつかの設計上の問題について
- 10. ASP.NETのUIコンテナを設計する
- 11. 指向設計と手続き指向設計について
- 12. WPFとMVVMのモデル設計上のヒントが必要です
- 13. yaml-cppとインターフェースするデータ構造の設計のヒント?
- 14. Java継承の設計のヒントが必要です
- 15. Javaの戦争基本的なヒントを設計するファイル
- 16. STLコンテナについて
- 17. IoCコンテナとドメイン駆動設計
- 18. iOS/Monotouchに移植可能なWindows Phoneゲームの設計に関するヒント
- 19. 学校のデータベース設計についての質問
- 20. 再帰的メソッドの設計についてのアドバイス
- 21. iPhone/Androidアプリの設計についてのヘルプが必要
- 22. Djangoのウィジェット設計の原則について
- 23. コールバック関数の設計についての混乱
- 24. ユーザインタフェースのオブジェクト指向設計について学ぶ
- 25. スピナーの "ヒント"を設定するには?
- 26. アクセシビリティのヒントをUINavigationItemに設定する
- 27. コンテナの設定と起動のためのDockerの依存関係の設計
- 28. ヒントが必要な分野についてのヒントを「削除」のコードのどの部分
- 29. C++:多くのコンテナを含むクラスのインターフェイスを設計する
- 30. MAPJOINヒントとSTREAMTABLEヒントを同時に設定できますか?
あなたはどのような容器を設計していますか?そうすることで何を達成することを望みますか?標準ライブラリにはすでにいくつかの有用なものが用意されています。これらは、私たちが通常コンピュータ科学の「コンテナ」として考えるものの基盤をカバーしています。 –
@Karl Knechtel:わかりやすい原則を理解したいのですが、それがどういう仕組みなのか、私は尋ねています。あなたが良いプログラマになりたいのであれば、物事がどう働いているのか理解していなければなりません。 – rookie
ものを再実装することは、必ずしもそれらを理解する最善の方法ではありません。標準実装がどのように動作するかについての詳細な説明を読むことをお勧めします。 –