用于矢量定义的c ++类模板结构

时间:2018-02-08 21:26:33

标签: c++

我对c ++很陌生,我不明白SMatrix<T>(int M)在程序中做了什么。我在类模板中搜索了很多关于构造函数的内容,但这不是语法。据我所知,sMatrix<T>是一种数据类型。以下是代码。

#ifndef T_SIMPLE_MATRIX_H
#define T_SIMPLE_MATRIX_H

#include <vector>

template<class T>
class SMatrix {
  private:

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

    int N;

  public:

    SMatrix<T>(int M){v.resize(M*M);N = M;}
    SMatrix<T>(){N = 0;}

    void resize(int M){
        v.resize(M*M);
        N = M;
    }

    int size(){
        return N;
    }


    // access matrix(r, c) (row and column)  for R/W operations
    T& operator() (int r, int c){
        return  v[N*r+c];
    }
    const T& operator()(int r, int c) const{
        return  v[N*r+c];
    }

};

#endif // 

1 个答案:

答案 0 :(得分:0)

在课程模板中,SMatrix<T>SMatrix意味着同样的事情。

您可以而且应该使用

SMatrix(int M){v.resize(M*M);N = M;}
SMatrix(){N = 0;}

具有相同的语义。