急!定义一个类,类对象是vector,vector的元素是结构体,结构体中又套了多个结构体,C++该怎么表达呢?

环境是VC6.0下面是我写的程序,总觉得不合适。。但作为小白又不知道怎么办。。明天就要交了求大神帮忙看看~~1.结构体该定义在类内还是类外呢?另外调用的时候该怎么写呢,难... 环境是VC6.0下面是我写的程序,总觉得不合适。。但作为小白又不知道怎么办。。明天就要交了求大神帮忙看看~~
1.结构体该定义在类内还是类外呢?另外调用的时候该怎么写呢,难道要写成CTargetState::m_vTargetState.m_strTargetPosition.m_dTargetPostionX;这样吗?
2.,向Vector中压数据该怎么写呢 m_vTargetState.pushback(m_vTargetState) 这样写吗?
3.如果我向vector中压了五个新的vector,然后想调用第三次压进去的vector的话,该如何调用呢?用链表?能直接读吗?该C++代码如何实现呢?

#include <vector>
#include<iostream>
#include <iomanip>
using namespace std;

class CTargetState//class declaration
{
public:

private:
struct m_strTargetPosition//笛卡尔坐标系位置
{
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
}
struct m_strTargetVelocity//速度
{
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
}
struct m_strTargetAccelerate//加速度
{
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
}

typedef struct m_strTargetState//定义自用结构类型
{
struct m_strTargetPosition;
struct m_strTargetVelocity;
struct m_strTargetAccelerate;
}StruTargetState;

vector <StruTargetState> m_vTargetState;

};//endof class CTargetState
展开
 我来答
寒曦的日常
推荐于2016-02-13 · TA获得超过350个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:214万
展开全部
#include <vector>
#include<iostream>
#include <iomanip>
using namespace std;
class CTargetState//class declaration
{
public:
struct m_strTargetPosition//笛卡尔坐标系位置
{
m_strTargetPosition(double x, double y, double z) :
m_dTargetPostionX(x), m_dTargetPostionY(y), m_dTargetPostionZ(z){}
double m_dTargetPostionX;
double m_dTargetPostionY;
double m_dTargetPostionZ;
};

struct m_strTargetVelocity//速度
{
m_strTargetVelocity(double x, double y, double z) :
m_dTargetVelocityX(x), m_dTargetVelocityY(y), m_dTargetVelocityZ(z){}
double m_dTargetVelocityX;
double m_dTargetVelocityY;
double m_dTargetVelocityZ;
};

struct m_strTargetAccelerate//加速度
{
m_strTargetAccelerate(double x, double y, double z) :
m_dTargetAccelerateX(x), m_dTargetAccelerateY(y), m_dTargetAccelerateZ(z){}
double m_dTargetAccelerateX;
double m_dTargetAccelerateY;
double m_dTargetAccelerateZ;
};

typedef struct m_strTargetState//定义自用结构类型
{
m_strTargetState(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
: m_stp(x1, y1, z1), m_stv(x2, y2, z2), m_sta(x3, y3, z3) {}
m_strTargetPosition m_stp;
m_strTargetVelocity m_stv;
m_strTargetAccelerate m_sta;
}StruTargetState;

vector <StruTargetState> m_vTargetState;
private:

};//endof class CTargetState

int main()
{
CTargetState::StruTargetState sts1(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
CTargetState::StruTargetState sts2(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9);

CTargetState ct;
ct.m_vTargetState.push_back(sts1);
ct.m_vTargetState.push_back(sts2);

cout<<ct.m_vTargetState[1].m_sta.m_dTargetAccelerateX<<endl;
cout<<ct.m_vTargetState[0].m_stp.m_dTargetPostionY<<endl;

return 0;
}
内部结构最好声明成公有,否则从外部无法访问。
我把你的成员变量变成公有是图简单,你可以写成员函数访问,一样的。

另外vector<vector<T>>相当于二维数据。比如:
vector<int> v1;
v1.push_back(1); v1.push_back(2); v1.push_back(3);
vector<int> v2;
v2.push_back(4);
vector<int> v3;
v3.push_back(5); v3.push_back(6);
vector<vector<int>> vv;
vv.push_back(v1);
vv.push_back(v2);
vv.push_back(v3);

相访问v3的元素,可以:
int res = vv[2][0]; // res = 5
访问v1的元素:
res = vv[0][2]; //res =3
无眼之月
2015-07-16 · 超过33用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:47.9万
展开全部
你先说程序要干嘛啊 另外调用内部结构要加::的
追问
要把目标的位置信息建立成一个类,是.h文件,如果有操作还要写.cpp文件,方便主函数调用。这个类中将目标位置信息建立成vector,里面的不同结构体表示不同的信息,比如xyz三轴的位置速度加速度。目标每一拍的信息都压入一个vector中,但一共跑几拍事先是不知道的。该怎么写呢。。。
追答

看晕了 我的理解是不是记录目标在一个时间点的速度 加速度信息?

目标的移动谁来控制?


单说记录的事情呢 你就定义几个结构体 速度 加速度的 用struct就行 然后建一个state类 包含这些结构体  没必要用内部结构 而且c++也不需要用struct关键字了 都用class


给你举个例子

/*
位置参数类
*/

class position{
public:
double x;
double y;
double z;

};
/*
速度参数类
*/
class speed{
public:
double x_speed;
double y_speed;
double z_speed;


};

/*
状态
*/
class state{
public:
position pos;
speed sp;




};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式