如何插入对多图的引用?

时间:2015-07-22 13:45:47

标签: c++11 insert multimap

我有一个class Foo,其中包含一个unsigned longreferenceBar class的多重地图。

我收到错误“没有匹配函数来调用multimap等”。

我插入多地图有什么问题?

[标题文件]

class Foo
{
public:

    Foo();

    ~Foo();

    void set(const unsigned long var1, const Bar& var2);

private:

    struct map_sort
    {
        bool operator()(const unsigned long& e1, const unsigned long& e2) const
        {
            return (e2 < e1);
        }
    };

    std::multimap<unsigned long,Bar&, map_sort> m_map;
};

[来源文件]

void Foo::set(const unsigned long var1, const Bar& var2)
{
    m_map.insert(var1,rtime); //<-- ERROR!!!!!!!!
}

1 个答案:

答案 0 :(得分:1)

您声明多地图成员采用var fs = require('fs'); console.error(fs); var text = fs.readFile('data.txt', 'utf8'); unsigned long

Bar&

while,在源文件中

std::multimap<unsigned long,Bar&, map_sort> m_map;

您试图插入void Foo::set(const unsigned long var1, const Bar& var2) { m_map.insert(var1,rtime); //var1 is const here! (rtime is not declared but I assume you meant var2 - which is const, too) } const unsigned long,它们与上面声明的不同(它们是常量)。请注意,const Bar&并不是真正的问题,因为它是按值复制的,因此,实际上,multimap会保留自己的变量版本和&#34; main&#34;一个人无法修改。

此外,请查看多地图const unsigned long方法http://www.cplusplus.com/reference/map/multimap/insert/的文档。您应该使用insert插入键值对:)

解决方案1:更改您的方法以采用非const参数:

std::pair

解决方案2:将地图更改为包含const值:

void set(unsigned long var1, Bar& var2);

工作示例:

std::multimap<const unsigned long, const Bar&, map_sort> m_map