2015-12-03 27 views
1

我确定这已被多次回答,但我不知道如何搜索此内容。这是多态吗?超载?修改内置对象的成员函数

基本上我想要一个向量,并按照我想要的方式修改它的功能或创建新的功能。我想要push_back()插入一个元素,并保持向量的降序。因此,添加将交换()元素到其各自的地方。或者我想添加一个新的函数pop_front()。

话虽这么说,我需要它作为一个成员函数,e.g:

vector<int> x; 
x.pop_front(); 

不是:

pop_front(x); 

这是有史以来在实践中做了什么?我知道我可以使用现有的容器,例如我的示例中的优先队列,但我宁愿制作完全自定义的函数。

+0

http://stackoverflow.com/questions/6806173/subclass-inherit-standard-containers可能对您有所帮助。 –

+0

C++ 17有望使'x.foo()'和'foo(x)'等效 –

回答

1

基本上,std::vector没有被设计成基类,从它继承将是一个坏主意。例如它的dtor不是虚拟的。

这里最好使用组合。例如

template <typename T> 
class MyVector { 
private: 
    std::vector<T> v; 
public: 
    void pop_front() { 
     // processing on v ... 
    } 
};