在本地函数内创建Map

时间:2014-06-26 12:12:13

标签: c++ map std

我有一张地图地图作为班级成员。 map <int,map<int,vector<byte>>> m_

然后,代码中的其他地方我需要向此地图添加一个元素。 我在做什么(在一个函数内)是:

map<int,vector<byte>> tmp; tmp.insert(std::make_pair(1,a_vector)); m_.insert(1,tmp)

但不起作用,因为此tmp是函数范围的本地。 如何创建位于本地范围之外的地图?

2 个答案:

答案 0 :(得分:1)

您无所事事,map会将对象复制或移动到自身,它不会保留对您添加的对象的引用。

答案 1 :(得分:1)

你的假设是错误的。 C ++具有值语义。当然,tmp具有本地范围。但是m_并没有。最后一个插入在tmp中存储m_。就像a_vector一样存储在tmp中。

由于C ++具有价值语义,我们通常只是在Y&#34;中存储X&#34;当我们实际上是指X的值时。