什么是阵列<;国际,2>;这段代码的意思是什么? 我在阅读C++程序设计语言第四版时遇到了这段代码。 template<class T> class Matrix { array<int,2> dim; // two dimensions T∗ elem; // pointer to dim[0]*dim[1] elements of type T public: Matrix(int d1, int d2) :dim{d1,d2}, elem{new T[d1∗d2]} {} // error handling omitted int size() const { return dim[0]∗dim[1]; } Matrix(const Matrix&); // copy constructor Matrix& operator=(const Matrix&); // copy assignment Matrix(Matrix&&); // move constructor Matrix& operator=(Matrix&&); // move assignment ˜Matrix() { delete[] elem; } // ... }; 模板 类矩阵{ 数组dim;//二维 T∗ elem;//指向类型为T的dim[0]*dim[1]元素的指针 公众: 矩阵(intd1,intd2):dim{d1,d2},elem{new T[d1∗d2]}{}//忽略错误处理 int size()常量{return dim[0]∗dim[1];} 矩阵(常数矩阵&);//复制构造函数 矩阵和运算符=(常数矩阵&);//复制赋值 矩阵(矩阵&&);//移动构造函数 矩阵&运算符=(矩阵&);//移动赋值 ~Matrix(){delete[]elem;} // ... };
类中有两个数据成员,其中一个是什么是阵列<;国际,2>;这段代码的意思是什么? 我在阅读C++程序设计语言第四版时遇到了这段代码。 template<class T> class Matrix { array<int,2> dim; // two dimensions T∗ elem; // pointer to dim[0]*dim[1] elements of type T public: Matrix(int d1, int d2) :dim{d1,d2}, elem{new T[d1∗d2]} {} // error handling omitted int size() const { return dim[0]∗dim[1]; } Matrix(const Matrix&); // copy constructor Matrix& operator=(const Matrix&); // copy assignment Matrix(Matrix&&); // move constructor Matrix& operator=(Matrix&&); // move assignment ˜Matrix() { delete[] elem; } // ... }; 模板 类矩阵{ 数组dim;//二维 T∗ elem;//指向类型为T的dim[0]*dim[1]元素的指针 公众: 矩阵(intd1,intd2):dim{d1,d2},elem{new T[d1∗d2]}{}//忽略错误处理 int size()常量{return dim[0]∗dim[1];} 矩阵(常数矩阵&);//复制构造函数 矩阵和运算符=(常数矩阵&);//复制赋值 矩阵(矩阵&&);//移动构造函数 矩阵&运算符=(矩阵&);//移动赋值 ~Matrix(){delete[]elem;} // ... };,c++,arrays,c++11,templates,copy-constructor,C++,Arrays,C++11,Templates,Copy Constructor,类中有两个数据成员,其中一个是T类型的指针。我无法理解arraydim是什么意思。这是array类型的成员变量dim的声明(可能std::array)成员变量dim存储2D矩阵的第一维和第二维的大小,matrix。这两个大小存储为数组(我假设:一个包含两个int类型值的数组) 没有这个成员变量dim,矩阵不知道它的堆分配数组elem中包含多少个元素(请注意elem是指向连续元素数组中包含的第一个元素的指针)。因此矩阵无法安全地迭代这些元素,因为它不知道何时停止。(事实上,Matrix可以执行的唯
T
类型的指针。我无法理解arraydim
是什么意思。这是array
类型的成员变量dim
的声明(可能std::array
)成员变量dim
存储2D矩阵的第一维和第二维的大小,matrix
。这两个大小存储为数组
(我假设:一个包含两个int
类型值的数组)
没有这个成员变量dim
,矩阵
不知道它的堆分配数组elem
中包含多少个元素(请注意elem
是指向连续元素数组中包含的第一个元素的指针)。因此矩阵
无法安全地迭代这些元素,因为它不知道何时停止。(事实上,Matrix
可以执行的唯一有用的操作是释放堆分配的数组,就像析构函数中的情况一样。)因此,堆分配数组的大小(即dim[0]*dim[1]
)也被显式存储。这是利用标准库中的std::array。您可以在此处找到详细的参考资料:
数组x代码>
声明长度为x的整数数组;在你的情况下,x是2
这稍后用于存储矩阵的形状