2014-01-30 42 views
1

所以我试图迭代地图,谁的关键是一对浮点数,它的值是向量的花车。我正在关于如何访问键和值的stackoverflow上的不同示例,但我遇到了使用.first或.second的问题。这是我的设置。在访问地图中的.first或.second时出错<std :: pair <float,float>,std :: vector <float>>

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 

我没有使用迭代器之前,请把我有些呆滞。

回答

6

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

在这里,你会想写XYPair key = iter->first;

+0

啊完美。非常感谢! –

相关问题