vector push_back报错

场景:定义了一个结构体,包含一个vector的成员变量,在给这个vTQ push_back数据的时候报错。

typedef struct tag_TQInfo
{
	int iTime;
	int iMarket;
	string sCode;
	vector<string>	vTQ;

	tag_TQInfo()
	{
		memset(this, 0, sizeof(tag_TQInfo));
	}
}TQINFO,*LPTQINFO;

原因:

  tag_TQInfo构造函数用了memset,将分给tag_TQInfo的那块内存都初始化了,也就把vector vTQ自带的东西都清零了,破坏了vector的结构,会导致之后vTQ使用出错。

  vector定义变量时会自己完成初始化工作。

 

解决方法:

  当结构体中包含vector、string等复杂数据类型,或包含自定义的结构时,构造函数初始化时不能使用memset。 

typedef struct tag_TQInfo
{
	int iTime;
	int iMarket;
	string sCode;
	vector<string>	vTQ;

	tag_TQInfo()
	: iTime(0)
	, iMarket(0)
	{
		
	}
}TQINFO,*LPTQINFO;

  

  

posted @ 2017-07-07 10:32  那一剑的風情  阅读(1749)  评论(0编辑  收藏  举报