在我的代码中,我有一个包含大量数据(〜100MB)的地图,我需要将所有数据从一个地图复制到另一个地图。目前我正在做这个交换but to my understanding,交换是一个奇特的方式来做副本。有没有办法简单地传输这两个地图使用的内存?我认为我可以用指针做到这一点,但我希望能有一个更优雅的方式。是否有快速的方法来替换两个地图内容?
1
A
回答
4
除非在探查器运行中出现瓶颈,否则您可能会过早进行优化。
我的编译器的std::map::swap()
有以下评论,这表明一个地图交换很可能是非常快:
/**
* This exchanges the elements between two maps in constant
* time. (It is only swapping a pointer, an integer, and an
* instance of the @c Compare type (which itself is often
* stateless and empty), so it should be quite fast.) Note
* that the global std::swap() function is specialized such
* that std::swap(m1,m2) will feed to this function.
*/
(g++ 4.4.5
)
5
23.2.1 [container.requirements.general]的ISO/IEC 14882:2011包含一般容器要求清单。对于所有标准集装箱,表达式a.swap(b)
和swap(a, b)
必须交换a
和b
的内容,并且对于除array
之外的所有标准集装箱都必须具有恒定的时间。这实际上意味着交换地图不能涉及复制所有地图元素。
相关问题
- 1. 是否有更快的方法来比较两个变量?
- 2. 谷歌地图Android API v2:是否有快速的方法来知道在指定位置是否有标记?
- 3. 什么是快速的方法来从两个稀疏矩阵
- 4. 是否有快速切换相对布局的方法?
- 5. 是否有快速替代弃用`SKPaymentTransaction.transactionReceipt`?
- 6. 在C++中是否有“float”的快速fabsf替换?
- 7. R:有条件替换列值的快速方法
- 8. preg_replace是否可以替换两个符号之间的所有内容?
- 9. 快速切换两个图像?
- 10. 替换两个词之间的内容
- 11. AvalonEdit:TextEditor是否具有快速搜索/替换功能?
- 12. 快速的方法来从一个bitset
- 13. PHP快速替换字符之间字符串的内容
- 14. 最快的方法来检查两个阵列是否有相同的行
- 15. 快速的方法来转换宽弦乐LE - >是
- 16. PHP快速轻松地替换字符?
- 17. 是否有快速的方式来绘制WPF文本
- 18. XSL:是否有使用谓词变量的快速替代方法?
- 19. memcmp - 是否有更快的方法来按位比较两个缓冲区
- 20. 快速的方法来查找两个字符串是否有共同的字符
- 21. 是否有任何快速的方法来获取字符串中的最后两个字符?
- 22. 有没有蓝图的功能来替换/删除内容?
- 23. 是否有一个快速的SCNMaterials库?
- 24. 下面是否有快速算法?
- 25. 是否有快速的方法来刷新Crystal报表中的Oracle表结构
- 26. 是否有一种快速的方法来查找异常的catch子句?
- 27. 在R中的`data.table`中,是否有快速的方法来组合表格?
- 28. cvFindContour的更快速替代方法()
- 29. 快速重绘地图的有效方法(Java/JPanel)
- 30. 是否有任何解决方法来运行混合内容?
不,std :: map :: swap真的只是交换指针,而不是做一个副本。 (但是如果你使用了'std :: swap',那么_will_会做一个拷贝。) –
@ChrisJesterYoung:23.4.1.5 [map.special]说''std :: swap'为两个映射'x'和'y'必须专门做相当于'x.swap(y)'。应该没有区别。 (我没有跟踪你!) –
@CharlesBailey:呃,再一次,你是对的。帽子提示等:-) –