在地图C ++中创建特定大小的向量

时间:2011-09-12 17:32:31

标签: c++ map

嗨假设我想创建一个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”下的向量。 (打印默认值)。

1 个答案:

答案 0 :(得分:1)

  

如果有人给我一张地图键,说“Element_1”,矢量大小为2,那么在“Element_1”键下创建矢量是否正常/安全,如下所示?

是的,我的朋友。如果密钥已经存在,那么它会更新关联的值,否则它会创建一个带有 key 的新条目,其默认值为[ie vector<node>()],然后更新指定的值[ie { {1}}]。

顺便说一下,vector<node>(2)会创建一个大小为vector<node>(2)的向量。这意味着,它将通过调用2的默认构造函数创建两个类型为node的元素。