/*定义全局的map*/
map > gr_paMap;
map > pa_gn_Map;
/*结构体数组定义在.h文件中*/
16001 /* 发电商静态注册表 */ sta_pa_reg
typedef struct sta_pa_reg_ops
{
char tag_phy[32]; /* 发电商编码 */ 市场成员的编码
char caption[128]; /* 发电商名称 */ 市场成员名称
char sub_caption[64]; /* 发电商简称 */
char participant_code[60]; /* 发电商编码old */
int power_type; /* 发电类型 */
int dispatch_type; /* 调度类型 */
int company_type; /* 商业性质 */
char market_id[36]; /* 业务场景ID */
char address[256]; /* 通信地址 */
char postal_code[60]; /* 邮政编码 */
char corporation[60]; /* 法人代表 */
char link_man[60]; /* 常用联系人 */
char office_phone[60]; /* 办公电话 */
char telephone[60]; /* 手机号码 */
char fax_phone[60]; /* 传真号码 */
char email[60]; /* 电子邮箱 */
char web_address[256]; /* 企业网址 */
char licence_code[200]; /* 电力业务许可编号 */
char deposit_bank[100]; /* 开户银行 */
char deposit_name[100]; /* 开户名称 */
char deposit_account[100]; /* 开户帐号 */
long register_date; /* 注册时间 */
long effective_date; /* 生效时间 */
long expiration_date; /* 失效时间 */
char agreement_id[100]; /* 使用协议书编号 */
char business_code[100]; /* 工商营业执照号 */
char tax_code[100]; /* 税务登记证号 */
char geogr_region_id[36]; /* 地理区域ID */
char control_area_id[36]; /* 控制区域ID */
long update_time; /* 信息更新时间 */
char update_person[36]; /* 信息更新人编号 */
char participant_id[36]; /* 市场成员ID */
}STA_PA_REG_OPS;
一条条的从上到下全部查出来吗?
select * from sta_gr_reg where caption= %s //获得发电集团编码 名称->编码
select * from sta_participantgrouprelation where sta_participantgrouprelation.gengroup_phy=%s //获得市场成员编码
select * from sta_pa_reg where sta_pa_reg.tag_phy=%s //获得市场成员的名称。
select * from sta_gn_reg where sta_gn_reg.participant_id =%s //获得机组名称
#define STA_PARTICIPANTGROUPRELATION_NO 16026 /* 市场成员与发电集团关系 */
/* 市场成员与发电集团关系 */ sta_participantgrouprelation
typedef struct sta_participantgrouprelation_ops
{
char participant_phy[36]; /* 市场成员ID */ 市场成员编码
char gengroup_phy[36]; /* 所属发电集团ID */ 发电集团编码
float share_percent; /* 集团所占股权 */
long effective_date; /* 生效时间 */
long expiration_date; /* 失效时间 */
long update_time; /* 信息更新时间 */
char update_person[36]; /* 信息更新人编号 */
int is_mastry; /* 是否控股方 */
int is_delete; /* 删除标记 */
}STA_PARTICIPANTGROUPRELATION_OPS;
#define STA_GR_REG_NO 16027 /* 发电集团静态注册表 */
/* 发电集团静态注册表 */ sta_gr_reg
typedef struct sta_gr_reg_ops
{
char tag_phy[32]; /* 发电集团编码 */
char caption[64]; /* 发电集团名称 */
char sub_caption[32]; /* 别名 */
char gengroup_id[36]; /* 发电集团ID */
long address; /* 通信地址 */
long postal_code; /* 邮政编码 */
long corporation; /* 法人代表 */
char linkman[36]; /* 常用联系人 */
char office_phone[256]; /* 办公电话 */
char telephone[32]; /* 手机号码 */
char fax_phone[32]; /* 传真号码 */
char email[64]; /* 电子邮箱 */
char web_address[32]; /* 网址 */
char effective_date[32]; /* 生效时间 */
char expiration_date[32]; /* 失效时间 */
char update_time[64]; /* 信息更新时间 */
char update_person[256]; /* 信息更新人编号 */
char market_id[36]; /* 业务场景ID */
int order_num; /* 排序号 */
char super_groupid[36]; /* 上级发电集团ID */
char top_group[36]; /* 所属顶级发电集团ID */
int is_delete; /* 删除标记 */
}STA_GR_REG_OPS;
#define STA_GN_REG_NO 16005 /* 经济机组静态注册表 */
/* 经济机组静态注册表 */ sta_gn_reg
typedef struct sta_gn_reg_ops
{
char tag_phy[32]; /* 机组编码 */
char caption[80]; /* 机组名称 */
char sub_caption[60]; /* 机组别名 */
char generator_id[36]; /* 机组ID */
char generator_code[64]; /* 机组编码 */
char participant_id[60]; /* 市场成员ID */ 市场成员编码
int generator_type; /* 机组类型 */
int generator_type_sub; /* 机组子类型 */
int commercial_type; /* 商业性质 */
int dispatch_type; /* 调度性质 */
float generator_rated_cap; /* 机组额定容量 */
float add_capacity; /* 增容容量 */
float generator_rated_net_cap; /* 额定上网容量 */
float max_tec_power; /* 机组最大技术出力 */
float min_tec_power; /* 机组最小技术出力 */
float emer_max_net_power; /* 高于额定容量紧急上网出力 */
float connect_voltage; /* 接入电压 */
float generator_voltage; /* 机端电压 */
float coal_consume_ratio; /* 设计标煤耗 */
long op_begin_date; /* 投运日期 */
long op_stop_date; /* 停运日期 */
long commercial_begin_date; /* 商运日期 */
long effective_date; /* 生效日期 */
long expiration_date; /* 失效日期 */
long update_time; /* 信息更新时间 */
int is_agc_flag; /* 是否Agc机组 */
}STA_GN_REG_OPS;
void MainWindow::MapforeachVec()
{ //sta_participantgr_regInit_vec;
// if 0 这个地方是可以的
map paMap;
//遍历市场成员记录 构造市场成员的编码和市场成员结构体的映射map
for(int indexpa=0;indexpa(sta_pa_regInit_vec[indexpa].tag_phy, sta_pa_regInit_vec[indexpa]));
//paMap.insert(pair(sta_participantgr_regInit_vec[indexpa].tag_phy, sta_participantgr_regInit_vec[indexpa]));
}
// cout<<"group_phy"<<" "<< sta_gr_regInit_vec[index].tag_phy < > gr_paMap;
//遍历发电集团和市场成员关联关系记录,构造发电集团编码和市场成员结构体的映射map
for(int indexParticipant =0;indexParticipant >::iterator gr_paMapIteFor;
gr_paMapIteFor = gr_paMap.find(sta_participantgr_regInit_vec[indexParticipant].gengroup_phy);
map::iterator paMapIte;
paMapIte=paMap.find(sta_participantgr_regInit_vec[indexParticipant].participant_phy);
if(gr_paMapIteFor != gr_paMap.end())
{
gr_paMapIteFor->second.push_back(paMapIte->second);
cout<<"old_pa_vec = " << gr_paMapIteFor->second.size()< pa_vec;
pa_vec.push_back(paMapIte->second);//这个地方是结构体变量
gr_paMap.insert(pair >(sta_participantgr_regInit_vec[indexParticipant].gengroup_phy, pa_vec));
}
}
catch(std::bad_alloc)
{
cout<<"11111111111111111111111111111111111111111111"<second.size()< > pa_gn_Map;
//遍历发电机组记录,构造市场成员编码和发电机组结构体的映射map
for(int indexGn =0;indexGn gn_vec;
map >::iterator pa_gn_MapTteFor;
try{
pa_gn_MapTteFor = pa_gn_Map.find(sta_gn_regInit_vec[indexGn].participant_id);
if(pa_gn_MapTteFor != pa_gn_Map.end())
{
gr_paMapIteFor->second.push_back(paMapIte->second);
cout<<"old_pa_vec = " << gr_paMapIteFor->second.size()<second;
}
cout<<"gn_vec***"<<" "< >(sta_gn_regInit_vec[indexGn].participant_id, gn_vec));
}
catch(std::bad_alloc){
cout<<"3333333333333333333333333333333333333333333333"< > pa_gn_Map;
//遍历发电机组记录,构造市场成员编码和发电机组结构体的映射map
for(int indexGn =0;indexGn >::iterator pa_gn_MapTteFor;
try{
pa_gn_MapTteFor = pa_gn_Map.find(sta_gn_regInit_vec[indexGn].participant_id);
if(pa_gn_MapTteFor != pa_gn_Map.end())
{
pa_gn_MapTteFor->second.push_back(sta_gn_regInit_vec[indexGn]);
cout<<"old_gn_vec = " << pa_gn_MapTteFor->second.size()< gn_vec;
gn_vec.push_back(sta_gn_regInit_vec[indexGn]);
//gn_vec.push_back(pa_gn_MapTteFor->second);//这个地方用map的iterator为何不对?这个地方map是一个结构体数组
pa_gn_Map.insert(pair >(sta_gn_regInit_vec[indexGn].participant_id, gn_vec));
}
}
catch(std::bad_alloc){
cout<<"3333333333333333333333333333333333333333333333"<second.tag_phy<second.size()<
上述代码运行时出现了抛出std::bad_alloc,内存分配失败错误。使用try-catch方法定位bad_alloc的发生地。
在使用map find函数的时候,要进行判断
if(pa_gn_MapTteFor != pa_gn_Map.end())
{
pa_gn_MapTteFor->second.push_back(sta_gn_regInit_vec[indexGn]);
}
else
{
vector
gn_vec.push_back(sta_gn_regInit_vec[indexGn]);
pa_gn_Map.insert(pair
}