来自vector的私有继承,公开等于运算符

时间:2016-02-04 17:43:05

标签: c++ c++11 inheritance vector

我需要一个以排序顺序存储元素的向量(我也需要恒定时间随机访问,所以不是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;

我有几个问题:

  1. 私下继承std::vector是不是一个坏主意?
  2. 我收到以下错误:
      

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

  3. 有什么建议吗?

1 个答案:

答案 0 :(得分:3)

只要它的私人继承,没关系,它在这里的构成大多不那么冗长。

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