我需要一个按顺序存储元素的向量(我也需要恒定时间的随机访问,所以不需要std::set)。我试图通过私有继承std::vector来实现这一点。

template <typename T, typename Tcomp = less<T> >
class SortedVector : private vector<T> {

    Tcomp _comparator;


public:
    using vector<T>::operator[];
    using vector<T>::operator==;
    using vector<T>::size;


我有一些问题:


私有继承std::vector是个坏主意吗?
我收到以下错误:


  SortedVector.h:26:30:错误:“ std::vector<std::basic_string<char> >::operator==”中没有与“ class std::vector<std::basic_string<char> >”匹配的成员



有什么建议吗?

最佳答案

只要是私有继承,就可以了,这在这里基本上不是那么冗长。

对于==运算符,您不能使用std::vector::operator==因为它没有一个,它被定义为自由函数,因此如果需要,您必须自己声明一个

10-08 08:15
查看更多