如何扩展stl类以拥有自己的方法?

Por*_*Man 2 c++ stl

我知道从stl类继承是一个主意.但有没有其他方法来扩展它们?

让我们说为了提高可读性,我希望能够在我的向量上调用"add"方法而不是可读性较低的"push_back".

或许我想在我的std :: map中添加一个简单的hasKey方法.

除了创建一个以std :: vector作为成员的整个包装类,将每个函数调用从我的包装器传递给向量之外,有什么方法可以做到这一点吗?

Pub*_*bby 12

你应该使用免费功能:

template<typename... Args>
bool has_key(std::map<Args...> const& map, typename std::map<Args...>::key_type key) {
  return map.find(key) != map.end();
}
Run Code Online (Sandbox Code Playgroud)

如果不是必要的话,请不要使用继承.那太傻了.

  • +1.它与Scott Meyer关于[非成员函数和封装]的观察结果非常吻合(http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197). (3认同)