惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 周伟

域名解析文件hosts文件是什么?如何修改hosts文件? PowerDesigner 使用心得 - 周伟 实现TOMCAT服务下一个ip绑定多域名绑定的方法 CSV扩展类 - 周伟 C++导入导出CSV文件 WebService 随写 - 周伟 mysql相关文章收集 Linux下两种自动启动Tomcat的方法 - 周伟 linux自动启动mysql LINUX下mysql的大小写区分设置 - 周伟 Jdom使用指南 vector+struct在数据接口中的应用 UML用例中使用和扩展意义 枚举和字符串互转 单件模式的C++标准实现 设计模式 Add Crash Reporting to Your Applications with the CrashRpt Library 设计模式——单键模式(singleton)C++实现 Singleton的C++实现 及相关问题
struct+vector实现树结构
周伟 · 2009-07-02 · via 博客园 - 周伟

typedef struct tagGateInfo
{
 char GateName[20];
 int  GateValue;
}GateInfo;

typedef struct tagBeamInfo
{
 char BeamName[20];
 int BeamValue;
 vector<tagGateInfo> vGateInfo;

}BeamInfo;

typedef struct tagChannelInfo
{
 char ChannelName[20];
 int ChannelValue;
 vector<tagBeamInfo> vBeamInfo;
}ChannelInfo;

typedef struct tagDataInfo
{
 char DataName[20];
 int DataValue;
 vector<tagChannelInfo> vChannelInfo;
}DataInfo;

VectorTest::GetVector(tagDataInfo &stuDataInfo)
{
 CString strMsg = NULL;

 strMsg.Format("DataName%");
 strncpy(stuDataInfo.DataName,strMsg,strMsg.GetLength());
 stuDataInfo.DataValue = 10;

 for (int i=0;i<50;i++)
 {
  tagChannelInfo stuChannelInfo;
  memset(&stuChannelInfo,0,sizeof(tagChannelInfo));

    for (int j=0;j<40;j++)
  {
   tagBeamInfo stuBeamInfo;
   memset(&stuBeamInfo,0,sizeof(tagBeamInfo));

      for (int z = 0;z < 30;z++)
   {
    tagGateInfo stuGateInfo;
    memset(&stuGateInfo,0,sizeof(tagGateInfo));

        strMsg.Format("GateName%d",z);
    strncpy(stuGateInfo.GateName,strMsg,strMsg.GetLength());
    stuGateInfo.GateValue = 20+z;

        stuBeamInfo.vGateInfo.push_back(stuGateInfo);
   }

      strMsg.Format("BeamName%d",j);
   strncpy(stuBeamInfo.BeamName,strMsg,strMsg.GetLength());
   stuBeamInfo.BeamValue = 30+j;
   stuChannelInfo.vBeamInfo.push_back(stuBeamInfo);
  }

    strMsg.Format("ChannelName%d",i);
  strncpy(stuChannelInfo.ChannelName,strMsg,strMsg.GetLength());
  stuChannelInfo.ChannelValue = 40+i;
  stuDataInfo.vChannelInfo.push_back(stuChannelInfo);
 }
 return TRUE;
}

调用:

void CMyDlg::OnBnClickedButton3()
{
 VectorTest vectorTest;
 tagDataInfo stuDataInfo;
 memset(&stuDataInfo,0,sizeof(tagDataInfo));
 vectorTest.GetVector(stuDataInfo);

 CString strMsg = NULL;

 //Get the
 strMsg.Format("GateName of Channle4_Beam2_Gate1_____________%s",stuDataInfo.vChannelInfo[3].vBeamInfo[1].vGateInfo[1].GateName);
 MessageBox(strMsg);

 int nGateCount = stuDataInfo.vChannelInfo[3].vBeamInfo[1].vGateInfo.size();

 int GateValue = stuDataInfo.vChannelInfo[3].vBeamInfo[1].vGateInfo[nGateCount-1].GateValue;

 strMsg.Format("%s",stuDataInfo.vChannelInfo[1].ChannelName);

}