我想知道包装C++ STL容器以保持一致性并且能够在不修改客户端代码的情况下交换实现是一个好主意.
例如,在一个项目中,我们使用CamelCase命名类和成员函数(Foo :: DoSomething()),我会将std :: list包装成这样的类:
template<typename T>
class List
{
public:
typedef std::list<T>::iterator Iterator;
typedef std::list<T>::const_iterator ConstIterator;
// more typedefs for other types.
List() {}
List(const List& rhs) : _list(rhs._list) {}
List& operator=(const List& rhs)
{
_list = rhs._list;
}
T& Front()
{
return _list.front();
}
const T& Front() const
{
return _list.front();
}
void PushFront(const T& x)
{
_list.push_front(x);
}
void PopFront()
{
_list.pop_front();
}
// replace all other member function of std::list.
private:
std::list<T> _list;
}; …Run Code Online (Sandbox Code Playgroud)