提问人:srinivas raman 提问时间:8/15/2018 最后编辑:Deduplicatorsrinivas raman 更新时间:1/10/2022 访问量:3014
array<int,2> dim 在这段代码中是什么意思?
What does array<int,2> dim mean in this piece of code?
问:
我在阅读 c++ 编程语言第 4 版时遇到了这段代码
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; }
// ...
};
类中有两个数据成员,其中一个是 类型的指针。我不明白是什么意思。T
array< int, 2 >
dim
答:
1赞
bipll
8/15/2018
#1
它是类型(可能是)的成员变量的声明。dim
array<int, 2>
std::array
4赞
Matthias
8/15/2018
#2
成员变量存储 2D 矩阵的第一维和第二维的大小。这两个大小存储为 (我假设 std::array< int, 2 >:
一个包含两个值的数组 )。dim
Matrix< T >
array< int, 2 >
int
如果没有这个成员变量,就不知道其堆分配的数组中包含了多少个元素(注意,它是指向连续元素数组中包含的第一个元素的指针)。因此,无法安全地迭代这些元素,因为它不知道何时停止。(事实上,唯一有用的操作是解除分配堆分配的数组,就像析构函数中的情况一样。因此,堆分配数组的大小(即 )也被显式存储。dim
Matrix< T >
elem
elem
Matrix< T >
Matrix< T >
dim[0] * dim[1]
3赞
QuantSolo
8/15/2018
#3
这是利用标准库中的 std::array。您可以在此处找到详细的参考资料: https://en.cppreference.com/w/cpp/container/array
array<int,N> x;
声明一个长度为 N 的整数数组;在您的情况下,N 是 2。
稍后将用于存储矩阵的形状。
评论