如何在c++中处理包含列表的嵌套数据结构
How to deal with nested data structure that contain lists in c++
我有两个数据结构,一个包含另一个,如图所示,我想在所有lineSegmentClusters上循环,访问每个的candidatePointList列表,最后访问该列表中每个的lineSegmentId。
typedef struct CandidateClusterPoint {
float orderingValue;
int lineSegmentId;
bool startPointFlag;
} CandidateClusterPoint;
typedef struct LineSegmentCluster {
int lineSegmentClusterId;
int nLineSegments;
list<CandidateClusterPoint> candidatePointList;
vector<CMDPoint> clusterPointArray;
bool enabled;
} LineSegmentCluster;
我试过的是:
list<CandidateClusterPoint>::iterator iter;
for (int i = 0; i < m_currComponentId; i++)
{
if (m_lineSegmentClusters[i].enabled)
{
for(iter=m_lineSegmentClusters[i].candidatePointList.begin() ; iter!=m_lineSegmentClusters[i].candidatePointList.end() ; iter++)
{
}
但我无法访问每一个的lineSegmentID我需要写些什么才能一个接一个地访问它们?
迭代器不是您实际的结构,而是一个包含对它的引用的类。您可以使用*运算符来访问它们,如下所示:
(*iter).lineSegmentID = <your value>;
您尝试过使用指针吗?在LineSegmentCluster类中,将其定义为列表:
list<CandidateClusterPoint*> candidatePointList;
然后在主函数中执行此操作(如果不更改迭代器指向的变量,请始终使用常量):
list<CandidateClusterPoint*>::const_iterator iter;
for (int i = 0; i < m_currComponentId; i++)
{
if (m_lineSegmentClusters[i].enabled)
{
for(itertry=m_lineSegmentClusters[i].candidatePointList.begin() ; itertry!=m_lineSegmentClusters[i].candidatePointList.end() ; itertry++)
{
cout << (*iter)->lineSegmentId // This should be where you access it
}
}
}
相关文章:
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 嵌套列表,用于在 C++ 中实现邻接列表
- C++中的嵌套初始值设定项列表为空
- 使用"auto"推断嵌套初始值设定项列表的类型
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- 嵌套的大括号括起来的初始值设定项列表
- C2436 '{ctor}':构造函数初始值设定项列表中的成员函数或嵌套类
- 使用 Boost.Spirit 解析嵌套列表
- 嵌套列表(字符串向量的向量)初始化失败
- 如何编写嵌套的初始分散列表,例如qpairs的qVector
- C++:将 Args && ... _args传递到嵌套列表的正确方法?
- 如何在嵌套列表初始化中从map<><>中辨别向量?
- 嵌套的C 常数数据结构,没有初始化列表或明确命名所有节点-VC 2012过早破坏了内部元素
- 显式构造函数和嵌套初始值设定项列表
- C++ 初始化构造函数初始化列表中的嵌套结构?
- C 中的嵌套双链接列表
- C :嵌套结构的平面初始化列表
- 使用父类构造函数初始化列表中的嵌套类字段中设置值
- 缩减嵌套模板的类型变量非类型列表
- 从您嵌套的列表中删除