2014-01-30 45 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

啊完美。非常感謝! –

相關問題