c++:交换地图的地图
c++: Swaping a map of maps
>我有以下内容:
typedef std::map<int, std::map<std::string, std::string> > ComplexMap;
ComplexMap map_a;
ComplexMap map_b;
我想将整个map_a换成map_b。以下两个选项之间是否存在功能差异:
// 1
ComplexMap::iterator end = map_a.end;
for (ComplexMap::iterator it = map_a.begin(); it != end; ++it)
{
mam_b[it->first].swap(it->second);
}
// 2
map_b.swap(map_a);
第一个版本具有线性复杂度 (O(N((,并且除非它们具有相同的键,否则不会正确交换映射的元素。
第二个具有恒定的复杂性(O(1((并正确交换映射的元素。你应该更喜欢第二个。
第二个选项应该比第一个选项更有效,因为 map.swap 将立即交换整个内容,而不是遍历整个内容并移动它。此外,第一个选项确实难以理解。
希望这有帮助,拉兹万。
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 基于多个条件处理地图中的所有元素
- 在C++中将矢量转换为嵌套地图
- C++嵌套if语句,基本货币交换
- shell排序中的交换和比较
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 通过交换元素使数组相同
- 地图计数确实很重要,或者只是检查是否存在
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 如何从地图中删除矢量对象
- 是否有任何C++功能可以对地图进行排序?
- 如何使用 std::variant 打印地图键/值?
- 交换运算符 + 重载会导致无限递归
- 为什么 std::reduce 需要交换性?
- 从矢量或地图中删除共享指针
- 在多线程环境中交换C 地图对象
- c++:交换地图的地图
- 将地图实例与临时地图交换是否安全