C++ std :: map和std :: vector的优点?

gen*_*gen 0 c++ performance dictionary vector std

在周末我将参加一个编程竞赛,我想知道我是否应该使用std :: vector或std :: map?我会简单地将它们用作数组,但我感到困惑哪个更好(主要是基本操作的速度)?

我在stackoverflow上看到这张图片,我不知道这些之间的主要区别是什么......

图片表明矢量更快......我真的不知道该怎么办请帮助我!我需要像数组一样使用它们但是具有动态尺寸...在此先感谢,

编辑 我可能会得到一个二维整数数组(例如一个城市或一个labirinth的地图,我会得到一些可以用图形算法或动态编程解决的问题),所以我需要的是:写,读取"表"的特定单元格,搜索特定值,我想这就是全部.我听说std :: map不会在内存中找到完整的N*M大小的表,但是我会按值来做它...所以它可能会使用更少的内存吗?

很抱歉这么傻但我从来没有真正的老师,我从中学到了我所知道的一切.我刚刚开始学习数据结构(2-3棵树,红黑树,二项式堆等等......)

小智 9

我想知道我是否应该使用std::vectorstd::map

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

但是,如果需要存储一个对象(或基元)数组,std::vector通常是要走的路.如果您需要存储密钥和值,那就是std::map发明的内容.你问的问题太宽泛了,所以回答它实际上非常困难,但你仍然可以得到这个想法.

此外,您还可以得到有关的代码,你不应该试图复制一些启示这里.