嗨假设我想创建一个map<int, vector<node> >
形式的地图,其中定义了节点
如
struct node{
string key;
double pnum;
node():key(""),pnum(0) {}
};
现在,如果有人给我一个地图键,说“Element_1”,矢量大小为2,那么创建它是否正确/安全 关键字“Element_1”下的矢量如下所示?
int main(void)
{
map<string,vector<node> > samplemap;
samplemap["Element_1"] = vector<node>(2);
}
上面的代码编译,我能够打印出存储在键“Element_1”下的向量。 (打印默认值)。
答案 0 :(得分:1)
如果有人给我一张地图键,说“Element_1”,矢量大小为2,那么在“Element_1”键下创建矢量是否正常/安全,如下所示?
是的,我的朋友。如果密钥已经存在,那么它会更新关联的值,否则它会创建一个带有 key 的新条目,其默认值为[ie vector<node>()
],然后更新指定的值[ie { {1}}]。
顺便说一下,vector<node>(2)
会创建一个大小为vector<node>(2)
的向量。这意味着,它将通过调用2
的默认构造函数创建两个类型为node
的元素。