C ++从std :: vector继承实现容器类型?

时间:2014-08-04 22:27:25

标签: oop inheritance c++11 stl polymorphism

继承标准库类以实现新容器类型的正确方法是什么?

我认为从std :: vector继承并不是完全正确的方法,虽然我不知道它是否真的有效。

我假设std :: vector继承自另一个类,并且我应该继承该类以实现新类型的容器,这是正确的,如果是这样,应该继承什么?

还有什么我需要知道的,例如,我可能需要对std :: iterator对象组进行哪些修改?

1 个答案:

答案 0 :(得分:0)

继承自vector

的类

<强> Matrix.h

#include <vector>
#include <iostream>

template<typename T>
class Matrix: public std::vector<T>
{
public:
   using std::vector<T>::vector;

private:
};

<强> Matrix.cpp

int main()
{
   Matrix<int> dani;
   dani.push_back(2);
   dani.push_back(3);

   for(const auto& it: dani)
      std::cout << it << " ";
}

包含向量

的类

你可以重载运算符,如果你喜欢这个方法,你可以在这里看到带有

的完整示例类
  • 模板
  • 矩阵操作
  • 运营商超载

在github中:here

#include <vector>
#include <iostream>
class Vector
{
public:
    Vector();
    Vector(int);
    Vector(int, int);

    ~Vector();

    std::vector<std::vector<T>> v;

    bool Check_Size() ;
    template<typename T1> bool Check_Size(std::vector<T1>&) ;
    template<typename T1> bool Check_Size_Fast(std::vector<T1>&);

    void Print();

    void Transponse();

    void Inverse();
    void Inverse2();
    void Inverse3();


    template<class T,class Q>
    friend std::vector<std::vector<T>> operator* (const Q , Vector<T> );
    ...

};