2015-12-03 74 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 ... 
    } 
};