具有常量值的 C++ Boost ptr_map

C++ Boost ptr_map with const value

我正在处理一个现有的项目,我正在尝试替换一个 std::map<AClass,const *BCLass>boost::ptr_map<AClass,const BClass>。问题是我找不到将一对插入地图的方法。似乎所有的插入函数都不能接受常量值。有解决办法吗?我也试过 boost::assign::ptr_map_insert() 没有运气。

此致。

这似乎不受支持

我什至无法用 boost::assign::ptr_map_insert¹

创造奇迹

我建议创建一个构建地图的函数,然后只返回一个 const 副本或对它的引用:

ptr_map<A,V> const m = make_my_map();

¹ 如果您有兴趣:

#include <boost/ptr_container/ptr_map.hpp>
#include <boost/assign/ptr_map_inserter.hpp>

struct A {
    int i;
    A(int i):i(i) {}
    bool operator<(A const& other) const { return i<other.i; }
};
struct B { std::string s;
    B(std::string s) : s(std::move(s)) { }
};

int main() {
    boost::ptr_map<A, /*const*/ B> m;

    boost::assign::ptr_map_insert(m)(42, "forty-two");
}