私は疑問に思っていましたが、C ++での設計上の決定が、stdライブラリコンテナのいずれにも純粋な抽象クラスを持たない理由はありますか?
hash_mapが後でstdext名前空間から来たが、非常によく似たインターフェースを共有していることを感謝します。後で特定のソフトウェア用に独自のマップを実装することにした場合は、何らかのインターフェイスを使用することをお勧めします。
例
std::base_map *foo = new std::map<std::string, std::string>;
delete foo;
foo = new stdext::hash_map<std::string, std::string>;
明らかに、私が知る限り、上記の例は不可能ですが、これはリストや他のstdlibコンテナーでも同様です。
これはC#またはJavaではないことを理解していますが、C ++には明らかにこの設計を停止する制約がないため、同様のコンテナー間に結合がないようにこのように設計されたのはなぜですか。