我需要一个按顺序存储元素的向量(我也需要恒定时间的随机访问,所以不需要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==
因为它没有一个,它被定义为自由函数,因此如果需要,您必须自己声明一个