2016-02-04 53 views
0

我需要一个存储排序顺序的元素的向量(我也需要恒定时间的随机访问,所以不需要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: error: no members matching ‘ std::vector<std::basic_string<char> >::operator== ’ in ‘ class std::vector<std::basic_string<char> >

有什么建议?

+0

你真的需要* *'运算符=='在矢量上?如果是这样,写你自己的并不难。 –

+0

我确实需要它,是的,这并不困难,但我无法弄清楚为什么会出现这种错误。 – SPMP

+0

对于std :: vector,'operator ==()'是一个非成员函数。 – comingstorm

回答

3

只要它是私人继承,没关系,这里大多是一个不太冗长的构图。

对于==操作,则无法使用std::vector::operator==原因是没有的,它被定义为一个免费的功能,所以你必须自己申报一个,如果你需要它