结构体中的vector<struct> 如何定义,如何使用
发布时间:2011-06-23 14:25:23 文章来源:www.iduyao.cn 采编人员:星星草
结构体中的vector<struct>, 怎么定义,怎么使用?
我想实现动态定义数组,所以我用vector
typedef struct{
unsigned short pt[100];
}USHORT1D;
typedef struct{
USHORT1D line[200];
}USHORT2D;
typedef struct{
vector<PLANE_OF_USHORT> zz;
}INFO;
INFO* inf;
void aaa(void* buffer){
USHORT2D *tmp = (USHORT2D*)malloc(sizeof(USHORT2D));
memcpy( tmp, buffer, sizeof(USHORT2D));
planes__->zz.push_back(*tmp);//为什么每次到这里都有问题,是不是vector用法错误??到底该怎么
}
int main(){
inf=(INFO*)malloc(sizeof(INFO));
do{
...获得 buffer,方法省略
aaa(buffer);
}while(blabla);
return 0;
}
谢谢大侠帮我看看
------解决方案--------------------
看了你的程序,但是不想改动你的程序。
vector用法如下
typedef struct
{
int a;
int b;
}AA;
typedef std::vector<AA> AAListType;
int main()
{
AAListType aaArray;
AA aa;
aaArray.push_back(aa);
}
对于你的程序没有必要做malloc,因为你存的是变量的本身,stl会做拷贝的
一般在存储指针的情况下采用malloc/new
比如
typedef std::vector<AA*> AAListType;
int main()
{
AAListType aaArray;
AA* aa = (AA*)malloc(sizeof(AA));
aaArray.push_back(aa);
}
如果把上面的改成下面
int main()
{
AAListType aaArray;
AA aa; // = (AA*)malloc(sizeof(AA));
aaArray.push_back(&aa); // 注意如果离开main函数,以后将无法读取这个aa,因为它的生命周期已经结束,内存已经释放,指针将是无效指针。
}
对于你的程序我的提议是 由于结构体比较大,推荐采用存储指针的方式,不需要多2次拷贝,耗资源不说还影响效率。
我觉得我说的已经够详细了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于visual studio 2005的工程文件*.vcproj的问题
请问:Visual Studio 2005 新建一个工程之后,会自动生产一个*.vcproj的一个文件,这...
-
用MFC画图的问题
我现在要用随机数产生300个固定的点保存在数组中,并在ondraw里画出这300个点,而且通过定时器使这300个点做运动。...
-
VS2010中的C++怎么连接数据库?
之前一直用VC++6.0的、现在想学学用最新的VS、但是感觉连接数据库和之前不一样了、具体应该怎么弄...
-
CLI编程 高手帮忙
我现在用C++/CLI 混编,
我有一个方法, 是调用一个C 的类库 得到一个 char * 的值
现在我...
-
新手求教::VC.NET2003里面的"添加变量"菜单变灰了,怎么弄?
最近学着用.net写程序,以前用的是6.0,不知道为什么我设计的EDIT Con...
-
刚学习vc.net 请教一个String做参数的问题,请高手指教一下
下面的代码为什么不能编译呢,出现这个错误呢
.\clr.cpp(12) : error C3...
-
VS2003中通过ADO取SQL2003中bigint 负值变正值的问题,求助!
在SQL2003中 数据库中假设 一个bigint类型的数据位-1234这样的值,通过如...
-
新手学习VC用那个版本的编译器好!
新手学习VC用那个版本的编译器好!?
------解决方案--------------------
VC++6.0
------解决...
-
正则表达式
有这样的字符串
"1,',2"",3"
希望将单个的"替换成单引号,将连续两个的""替换成一个双引号。
正则表达式该如何写。
...
-
为什么<<精通MFC>>附带的源程序不能编译成功
vc2010编译后有两个错误提示,分别如下,
错误一:
1>c:\program files\microsoft vi...