我正在处理一个现有项目,我正在尝试更换一个
std::map<AClass,const *BCLass>
boost::ptr_map<AClass,const BClass>
{{1}}。问题是我找不到将一对插入地图的方法。似乎所有插入函数都不能接受const值。有解决方案吗?我也尝试过使用boost :: assign :: ptr_map_insert()而没有运气。
问候。
答案 0 :(得分:0)
这似乎是不受支持的
我甚至无法用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");
}