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

在VC6.0环境下定义一个类,类的对象是vector,vector的元素是数组,用C++该怎么表示呢?很急,求大神帮忙!... 在VC6.0环境下定义一个类,类的对象是vector,vector的元素是数组,用C++该怎么表示呢?很急,求大神帮忙! 展开
 我来答
寒曦的日常
2015-07-15 · TA获得超过350个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:213万
展开全部
你可以写出vector<int[10]> vec这样的定义,这在大部分编译器下都是可以通过编译的,但没有任何用处。因为数组不支持=赋值操作符,在push_back的时候会有问题。用vector<vector<int>>应该很容易达到你要的效果。

如果非要用数组的话,折中的方法我想到的有两种:
1. 使用vector<int*> 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<A> 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

以上。望采纳。
追问
谢谢大神详细的回答~如果还是定义一个类,类对象是vector,vector的元素是结构体,结构体中又套了另一个结构体,这种情况又该怎么办呢?结构体是的定义是应该在类内还是类外呢?
追答
struct AS
{
int a;
};

struct BS
{
int b;
AS as;
};

class CS
{
public:
vector bvec;
};
类似于这样就可以。定义在类的内部也可以,C++支持内部类定义。不过从外部访问的时候要用::操作符。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式