我有一张地图地图作为班级成员。
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是函数范围的本地。 如何创建位于本地范围之外的地图?
答案 0 :(得分:1)
您无所事事,map
会将对象复制或移动到自身,它不会保留对您添加的对象的引用。
答案 1 :(得分:1)
你的假设是错误的。 C ++具有值语义。当然,tmp
具有本地范围。但是m_
并没有。最后一个插入在tmp
中存储m_
的值。就像a_vector
的值一样存储在tmp
中。
由于C ++具有价值语义,我们通常只是在Y&#34;中存储X&#34;当我们实际上是指X的值时。