I have a map<int,map<int,string>> themap
I would like to swap elements themap[1] and themap[2]. But the inside maps map<int,string>
are very big so I don't want them copied. Is there way to do this or do I have to change themap to use pointers.
答案 0 :(得分:4)
您可以尝试使用std::map::swap
作为外部地图:
void swap( map& other );
将容器的内容与其他容器的内容进行交换。不会对单个元素调用任何移动,复制或交换操作。
答案 1 :(得分:3)
themap[1].swap(themap[2]);
这不会复制甚至移动地图中的任何元素。它可能只是交换根节点的所有权,只需几个指针分配。
答案 2 :(得分:0)
您可以使用std::swap
,因为它具有std::map
(以及许多其他容器和库类型)的专业化。
std::swap(themap[1], themap[2]);
它会调用std::map::swap
,但我认为养成使用std::swap
并信任标准委员会和图书馆实施者做正确事情的习惯是有用的。