我是第一次尝试使用boost lib并且不知道如何分配字符串和共享指针的映射。 这是我的代码,我正在尝试分配值,但无法做到。
#include <boost\shared_ptr.hpp>
#include <boost\assign.hpp>
#include <boost\map.hpp>
struct X
{
public:
int p;
double q;
X();
~X();
};
struct Y
{
float m;
double n;
Y();
~Y();
};
struct Z
{
public:
std::map<std::string,boost::shared_ptr<X>> Xtype;
std::map<std::string,boost::shared_ptr<Y>> Ytype;
int i;
string name;
Z();
~Z();
};
struct X *x1;
struct Y *y1;
void setx()
{
x1->p=10;
x1->q=20.20;
}
void sety()
{
y1->m=10;
y1->n=20.20;
};
void initialize(Z *z1)
{
z1->i=30;
// how to i add x1 and y1 to Xtype and Ytype respectively of z1 struct
}
我的问题: - 如何将x1和y1值分配给z1类型的Xtype和Ytype。 真的不知道该做什么以及如何开始。如果我能够分配,那么我可以继续进行序列化。
答案 0 :(得分:1)
只需使用[]
运算符:
std::map<std::string, some_type> my_map;
some_type object=get_object(); // an object that you want to insert into the map
std::string key=get_key(); // the key you want to associated with object
assert(my_map.empty()); // no keys in map yet! (only for demonstration)
my_map[key] = object;
如果地图已包含提供的密钥,则替换该密钥的对象。 否则,将生成一个新的地图条目并使用对象进行初始化。详细了解std::map
here(如果您还不知道,请避免使用shared_ptr<>
,并且不是200%确定需要它。)