初步完成的c++二维矩阵容器
小小的二维矩阵,用到了模板、智能指针,列表等
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
template<typename T>
class Array2D {
public:
Array2D() {};
Array2D(int m, int n, T value):_m(m),_n(n) {
grid = make_shared<vector<shared_ptr<vector<T>>>>(m,
make_shared<vector<T>>(n, value));
}
Array2D(Array2D& array2d) {
_m = array2d.getM();
_n = array2d.getN();
grid = make_shared<vector<shared_ptr<vector<T>>>>(_m,
make_shared<vector<T>>(_n, 0));
for (int i = 0; i < _m; i++) {
for (int j = 0; j < _n; j++)
grid->at(i)->at(j) = array2d.getValue(i, j);
}
}
~Array2D() {};
inline int getM() { return _m; }
inline int getN() { return _n; }
T getValue(int i, int j){
return grid->at(i)->at(j);
}
private:
int _m, _n;
shared_ptr<vector<shared_ptr<vector<T>>>>grid;
};
int main()
{
std::cout << "Hello World!\n";
Array2D<double> mat(300, 200, 1.5);
auto mat2 (mat);
for (int i = 0; i < mat2.getM(); i++) {
for (int j = 0; j < mat2.getN(); j++)
cout << mat2.getValue(i,j) << " ";
}
}