我一直在想,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>;
显然,据我所知,上面的示例是不可能的,但是对于 list 和其他 std lib 容器来说,这是类似的。
我很欣赏这不是 C# 或 Java,但是 C++ 中显然没有限制来阻止这种设计,那么为什么要这样设计,以便类似容器之间没有耦合。