【问题标题】:Getting error when accessing .first or .second in map <std::pair<float,float>, std::vector<float> >在地图 <std::pair<float,float>, std::vector<float> 中访问 .first 或 .second 时出错
【发布时间】:2014-01-30 05:27:11
【问题描述】:

所以我试图迭代一个地图,它的关键是一对浮点数,它的值是浮点数的向量。我在 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

我之前没有使用过迭代器,所以请放慢我的步伐。

【问题讨论】:

    标签: c++ vector map iterator


    【解决方案1】:

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

    在这里,你要写XYPair key = iter-&gt;first;

    【讨论】:

    • 啊完美。非常感谢!
    猜你喜欢
    • 2021-09-03
    • 2023-03-23
    • 2021-05-05
    • 1970-01-01
    • 2019-04-23
    • 2021-12-07
    • 2021-04-12
    • 2017-11-03
    • 2021-01-26
    相关资源
    最近更新 更多