2016-12-03 9 views
1

1つのプロジェクト内でboostとstlの両方のライブラリを使用するのは大丈夫でしょうか?そうすることの潜在的な欠点は何か(明らかに1のコードサイズに加えて)?私は、原子型とベクトルのような低レベルのデータ構造のための多くのラッパークラスを作成しているので、将来のいくつかの潜在的な問題を助けることができると思うが、おそらく自分のコンテナクラスにすべてをラップしないだろう。一つのプロジェクトでboostとstlのライブラリを混在させるのは難しいですか?

+2

標準の言語機能用のラッパークラスは作成しません。あなたはこれを行うことで何を得るのですか?セマンティクスは正確に定義されており、C++はクラスと型を提供しなければなりません。私は、コンパイラが壊れた時代はうまくいっていると思う。 – Jens

+0

私はゲームエンジンを作成しており、基本機能のラッパークラスを提供することで、MyVectorクラスの実装をコードベースのどこでも変更することなく柔軟に変更できます。ですから、私はMyVectorの実装としてstl :: vectorを使い始めてから、eastlや他の何かを使いやすくすることができます。 – Jason

+0

EASTLにつながった前提のいくつかは古くなっていますが、一部は有効です。標準委員会にはいくつかの議論があります。興味がある場合はhttps://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/sg14をご覧ください – Jens

答えて

2

そのためにラッパーを作成して時間を無駄にしないでください。またboostはstlの拡張の一種として作られています。 ...

ビルドプロセスで世話をするために多くのAPIを学ぶために、より多くの依存関係しかし、それは便利であれば、なぜ単にことができるか再作成します。もちろん

は、常に新しいLIBSを使用するdissadvantageあり中古。 Boostはstlスタイルで書かれた方法です。

+0

例えば、stlアルゴリズムが問題なくBoostコンテナを受け入れると言っても忘れてしまいます。多くのコンバージョンを行わないために、1つのコンテナを選択してみてください。 –

+0

洞察に感謝します。そして、私がベクトルのようなもののためのラッパーを作成している理由は、私の上記のコメント応答で言及されています。私はそれが私の場合に非常に役に立つと思う。 – Jason

+2

stl型のイテレータとtypedefを使用すると、ほぼすべてのC++フレームワークに切り替えることができます。ラッパーは必要ありません。ある時点でよりエキゾチックなlibに変更したい場合は、ラッパーを書くことができます。それまでのtypedefは簡単な切り替えを可能にし、イテレータはコードが互換性があることを保証します。 –

関連する問題