在map <std :: pair <float,float>,std :: vector <float>&gt; </float> </std :: pair <float,float>中访问.first或.second时出错

时间:2014-01-30 05:27:11

标签: c++ vector map iterator

所以我试图迭代一个地图谁的关键是一对浮点数,它的'值是浮点数的向量。我在stackoverflow上关注如何访问键和值的不同示例,但是我遇到了使用.first或.second的问题。这是我的设置。

typedef std::pair<float, float> XYPair;
typedef std::map<XYPair, std::vector<float> > VectorsMap;

VectorsMap points;
VectorsMap::iterator iter;

//some function that spits back a VectorsMap map.
points = fileParser.parseFile();

//iterate over all vectors
for (iter = points.begin(); iter != points.end(); iter++) {
    XYPair key = iter.first;
}

以下是错误:

myMain.cpp: In function âint main(int, char**)â:
myMain.cpp:21: error: âstruct std::_Rb_tree_iterator<std::pair<const std::pair<float, float>, std::vector<float, std::allocator<float> > > >â has no member named âsecondâ
make: *** [myMain.o] Error 1

之前我没有使用过迭代器,所以请给我一些松懈。

1 个答案:

答案 0 :(得分:7)

迭代器具有与指针类似的接口。如果您有一对指针p,则必须写p->firstp->second,而不是p.firstp.second

在这里,您需要撰写XYPair key = iter->first;