C++定义一个类,类的对象是vector,vector的元素是数组,用C++该怎么表示呢?很急,求大神帮忙!

2025-04-12 22:46:28
推荐回答(1个)
回答1:

你可以写出vector vec这样的定义,这在大部分编译器下都是可以通过编译的,但没有任何用处。因为数组不支持=赋值操作符,在push_back的时候会有问题。用vector>应该很容易达到你要的效果。

如果非要用数组的话,折中的方法我想到的有两种:
1. 使用vector vec这样的定义,访问数组数据时用计算地址的方法代替索引。比如:
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,};
vec.push_back(a);
int res = *(vec[0] + 3); // res = 3

2.使用一个类对数组进行一次包装,然后重载该类的=操作符。比如:
class A
{
public:
int a[10];
A& operator=(const A& aa)
{
for(int i = 0; i < 10; i++)
a[i] = aa.a[i];
}
};
这样可以用vector vec定义完成类似的功能。如:
A r1; r1.a = {1, 2, 3, ....} (这一行是伪代码)
A r2; r2.a = {1, 3, 5, ....} (伪代码)
vec.push_back(r1);
vec.push_back(r2);
int res = vec[0].a[0]; // res = 1
res = vec[1].a[1];// res = 3

以上。望采纳。