所以我试图迭代一个地图谁的关键是一对浮点数,它的'值是浮点数的向量。我在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
之前我没有使用过迭代器,所以请给我一些松懈。
答案 0 :(得分:7)
迭代器具有与指针类似的接口。如果您有一对指针p
,则必须写p->first
和p->second
,而不是p.first
和p.second
。
在这里,您需要撰写XYPair key = iter->first;