我一直在想,C++语言在std标准库中为什么没有使用纯虚抽象类来设计任何容器?
我很欣赏hash_map后来从stdext名称空间中引入,但它与std标准库中的接口非常相似。如果我决定稍后想要为特定软件实现自己的映射表,我希望有某种接口可以使用。
例子
std::base_map *foo = new std::map<std::string, std::string>;
delete foo;
foo = new stdext::hash_map<std::string, std::string>;
显然,就我所知,上述示例是不可能的。但是对于列表和其他标准库容器来说也是类似的。
我知道这不是C#或Java,但在C++中显然没有限制阻止这种设计,那么为什么要这样设计,以便在类似容器之间没有耦合呢?