我有两个数据结构,一个包含另一个,如图所示, 我想循环所有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,我需要写什么才能一个接一个地访问它们?
答案 0 :(得分:0)
迭代器不是您的实际结构,而是包含对它的引用的类。您可以使用*运算符访问它们,如下所示:
(*iter).lineSegmentID = <your value>;
答案 1 :(得分:0)
您是否尝试过使用指针?在LineSegmentCluster类中,将其定义为列表:
list<CandidateClusterPoint*> candidatePointList;
然后在你的main函数中执行此操作(如果不更改迭代器指向的变量,则始终使用consts):
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
}
}
}