Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop C++;从std::vector继承以实现容器类型?_Oop_Inheritance_C++11_Stl_Polymorphism - Fatal编程技术网

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

Oop C++;从std::vector继承以实现容器类型?,oop,inheritance,c++11,stl,polymorphism,Oop,Inheritance,C++11,Stl,Polymorphism,继承标准库类以实现新容器类型的正确方法是什么 我假设从std::vector继承不是完全正确的方法,尽管我不知道它是否真的有效 我假设std::vector继承自另一个类,并且我应该继承该类以实现新类型的容器,这是否正确,如果正确,应该继承什么 还有什么我需要知道的吗?例如,我可能需要对std::iterator对象组进行哪些修改?类继承自vector 矩阵.h #include <vector> #include <iostream> template<type

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

我假设从std::vector继承不是完全正确的方法,尽管我不知道它是否真的有效

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

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

类继承自vector 矩阵.h

#include <vector>
#include <iostream>

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

private:
};
#包括
#包括
样板
类矩阵:公共std::vector
{
公众:
使用std::vector::vector;
私人:
};
矩阵.cpp

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

   for(const auto& it: dani)
      std::cout << it << " ";
}
intmain()
{
矩阵达尼;
丹尼。推回(2);
丹尼。推回(3);
用于(康斯特汽车和it公司:丹尼)

std::cout您想实现什么容器类型?很可能您不需要这样做,最好使用组合而不是继承。这个问题已经被问过很多次了。这里有一个:也有很多很好的讨论(关于C#,但是这些主题非常广泛)
#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> );
    ...

};