C++类中的类作为自定义向量(如何初始化?



很好,现在我想创建自己的基本向量,我这样做:

template <typename T>
class Vector {
T * vector;
int size;
public:
Vector(int pSize = 10) : size(pSize)
{
vector = new T[size];
}
T& operator[](int i)
{
return vector[i];
}
};

所以对于一维向量,一切都很好。我可以做:

Vector<int> vectorInt(20);
for (int i = 0; i < 20; i++)
vectorInt[i] = i;
for (int i = 0; i < 20; i++)
std::cout << vectorInt[i] << std::endl;

好吧,但是当我想我的向量放在同一个向量类时,问题就出现了,如下所示:

Vector<Vector<int>> xy(5);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 10; j++)
{
xy[i][j] = j;
std::cout << xy[i][j] << " ";
}
std::cout << std::endl;
}

问题是我无法内部向量初始化为请求的大小(正如构造函数所说,它默认为 10(。只有局外人一到"5"。

无论如何可以在声明时初始化内部向量吗?

好吧,为了做我自己的基本 Vector 类,我做了以下工作: 我创建了一个这样的构造函数:

Vector(int pSize, T twoDim) : size(pSize)
{
vector = new T[size];
}

使用此构造函数,同一类采用Vector<int>的另一个实例,并像 std lib 一样创建该实例。

这是我以动态方式初始化 2d 5x10 矩阵的最终代码:

#include <iostream>
template <typename T>
class Vector {
T * vector;
int size;
public:
Vector(int pSize, T twoDim) : size(pSize)
{
vector = new T[size];
}
Vector(int pSize = 10) : size(pSize)
{
vector = new T[size];
}
T& operator[](int i)
{
return vector[i];
}
};
int main()
{
Vector<Vector<int>> xy(5, Vector<int>(10,0));
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 10; j++)
{
xy[i][j] = j;
std::cout << xy[i][j] << " ";
}
std::cout << std::endl;
}
return EXIT_SUCCESS;
}

最新更新