尝试将数据从多地图传递到地图未按建议工作

Trying to pass data from a multimap to a map is not working as suggested

在此postConvert a multi_key map into a "normal" map joining the multiple keys

他们建议如何通过将第一个值传递给第二个值来将多图转换为地图。我在我的代码中尝试过,但它不起作用:

multimap<double, Point>::iterator it;
  
for(it = _mapIntersectionVertices.begin(); it != _mapIntersectionVertices.end(); ++it)
{
  _mapNewPoints[it->first].insert(it->second);
}

我收到错误 "no member named 'insert' in 'Point'"我不知道为什么,我不是要调用方法,只是按照[=中的示例37=]。作为附带的事情,我对他们对地图使用相同的迭代器和 for 内的多重地图的事实不太满意,但是当使用地图迭代器 it2 来代替时:

 _mapNewPoints[it2->first].insert(it->second)

没有变化

我在某些 class 中有以下属性,我正在尝试填写。

multimap<double, Point> _mapIntersectionVertices;
map<double, Point> _mapNewPoints;

点 class 是:

class Point
{
    private:
        Vector2d _coordinates; //using Eigen library

    public:
        int _label;
        Point(const double x = 0.0, const double y = 0.0);
        Point(Vector2d coordinates);

        void setCoordinates(const double x, const double y) {_coordinates(x, y);}
        const Vector2d& getCoordinates() const {return _coordinates;}


};

我想将多图的内容复制到地图中,这样我就可以在后面添加更多数据而不会弄乱第一个,而且比将 _mapNewPoints 声明为多图(使用[] 可用于地图但不适用于多地图的运算符。

我该如何解决这个问题?

_mapNewPoints[it->first].insert 意味着 Point 有一个 insert 方法,但事实并非如此。我相信你可能想要这样的东西:

for (it = _mapIntersectionVertices.begin(); it != _mapIntersectionVertices.end(); ++it)
{
    _mapNewPoints.insert(*it);
}