c ++通过指针访问矢量的二维数组

时间:2014-06-05 18:41:34

标签: c++ pointers vector multidimensional-array

我有一个类通过使用嵌套向量来模拟2D矩阵,如下所示:

在类头文件中,这就是我所拥有的:

template <typename T> class L1Matrix {
private:
  std::vector<std::vector<T> > mat;
  unsigned rows;
  unsigned cols;

public:
  L1Matrix(); /* emptry constructor */
  L1Matrix(unsigned _rows, unsigned _cols, const T& _initial);
  L1Matrix(const L1Matrix<T>& rhs);
  virtual ~L1Matrix();
  T& operator()(const unsigned& row, const unsigned& col);
  const T& operator()(const unsigned& row, const unsigned& col) const;
}

在课堂宣言中,这就是我所拥有的:

// default constructor
template<typename T>
L1Matrix<T>::L1Matrix() : rows(0), cols(0) {};


template<typename T>
L1Matrix<T>::L1Matrix(unsigned _rows, unsigned _cols, const T& _initial) {
   mat.resize(_rows);
   for (unsigned i=0; i<mat.size(); i++) {
     mat[i].resize(_cols, _initial);
   }
   rows = _rows;
   cols = _cols;
}

template<typename T>
L1Matrix<T>::L1Matrix(const L1Matrix<T>& rhs) {
   mat = rhs.mat;
   rows = rhs.get_rows();
   cols = rhs.get_cols();
 }

template<typename T>
std::vector<std::vector<T> >::reference L1Matrix<T>::operator()(const unsigned& row, const unsigned& col) {
   return this->mat[row][col];
}

为了简洁起见,我没有在这里给出其余的类实现。

现在在主代码中我创建了指向这个2D矩阵的指针,如下所示:

 L1Matrix<bool>* arr1;  // this is pointer to L1Matrix object
 L1Matrix<int> arr2(XSize, YSize, 0);  // L1Mtarix object

 arr1 = new L1Matrix<bool>(XSize, YSize, true);

现在对于实际的L1Matrix对象arr2,我可以像这样访问各个行和列:arr2(row,col)但我的问题是如何使用L1Matrix访问类似的行和列元素指针对象arr1

请告诉我。 感谢

1 个答案:

答案 0 :(得分:0)

您应该可以使用(*arr1)(row, col)