首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ std::map和std::载体的优势?

C++ std::map和std::载体的优势?
EN

Stack Overflow用户
提问于 2013-01-09 20:42:42
回答 3查看 12.2K关注 0票数 0

在周末,我将参加一个节目比赛,我想知道我应该使用std::向量还是std:map?我会简单地将它们用作数组,但我不知道哪一个更好(主要是基本操作的速度)?

我在堆栈溢出上看到了这张照片,我不知道这两者的主要区别是什么.

图片表明矢量更快..。我真的不知道该怎么办,请帮帮我!我只需要像数组一样使用它们,但要有动态大小.提前谢谢你,

编辑I可能会得到一个二维整数数组(例如,一个城市的地图或一个地形图,我会得到一些可以用图形算法或动态规划来解决的问题),所以我需要的是:写入、读取“表”的特定单元格、搜索特定的值,我猜就这样了。我听说std::map不会在内存中找到完整的N*M大小的表,但是我会按值来实现它的值.那么,它是否真的可以使用更少的内存?

,对不起,这么傻,但是我从来没有真正的老师,我从我的身上学到了所有我所知道的。我刚开始学习数据结构(2-3棵树、红黑树、二项式堆等等)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-09 20:47:54

我想知道我应该使用std::vector还是std::map

,它完全取决于您想要/需要做什么。如果您需要从用户输入2个数字,然后添加它们并显示结果,那么使用向量或地图是没有意义的。

但是,如果您需要存储一个对象数组(或原语),通常需要使用std::vector。如果您需要存储键和值,那么这就是std::map发明的目的。你问的问题太宽泛了,所以它实际上很难回答,但你可能还是会明白这个想法。

此外,您可以得到一些关于代码的灵感,您不应该尝试复制here

票数 9
EN

Stack Overflow用户

发布于 2013-01-09 20:45:29

地图不是数组,而是一棵红黑的二叉树.因此,它不是一个好的选择作为一个基本的数组存储。

向量可以用作数组,并且可能提供类似于数组的访问速度(虽然它可能依赖于实现,但大多数(如果不是全部)将被实现为数组)。向量的优点不是速度,而是它为您管理内存。

另外,您可能需要阅读不同的数据结构。它将有助于扩展您的编程技能。

票数 1
EN

Stack Overflow用户

发布于 2013-01-09 22:48:13

您指的是字符数组的C意义中的数组还是数学意义上的数组?你的数组是多维的吗?

如果您指的是数学类型,您可能会发现,将数组存储在堆中的空间中,并通过执行一个新的、较大的malloc,然后再加上一个memcopy和一个没有旧错误区域的大小来调整大小,可能比使用std:容器更快。

不要被std愚弄:建设者听起来就像他们分配了你需要的空间行走。在构造函数时,它们会破坏太多的空间,所以如果不这样做的话,它们就不必像以前那样频繁地增长。当他们不得不成长的时候,他们又一次为了同样的理由而要求额外的空间。当您必须扩展您的空间时,请记住使用最大的数据项移动数据。假设有64位总线和字符一次移动一个,并且编译器不够聪明为您优化这一点,那么1/64长的移动速度要比N个字节快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14246087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档