请问C++的容器中用index访问元素,array、vector、hash_map哪个最快?

发布于 2022-09-06 03:02:54 字数 176 浏览 20 评论 0

请问C++的容器中,如果用index访问容器里的元素,数组、vector、哈希表(假设没有碰撞)哪个最快?

我的猜测是:从快到慢为数组、vector、哈希表。因为vector要检查边界,hash_map要用hash function重新算出hash index,即使没有碰撞也多了一个运算步骤。不知道这个答案是否正确呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转瞬即逝 2022-09-13 03:02:54

肯定是array快啊,vector和hashtable都是对array的封装啊。
区别array在编译期要确定大小,而vector不用,它是new出来的array。而hashtable会有碰撞啊!

爺獨霸怡葒院 2022-09-13 03:02:54

不能说你错,至少不准确,哈希表有很多的,int hash[N],这个hash就和数组速度一样,oj做题常用。

array和vector一样快,都是数组,都是容器,都要检查边界。

hash_map现在c++已经没了,c++11之前的东西,其内部是hashtable,确实hashtable也用的hash,但是它的hash是建立在“指针数组”结构上,查找虽然也是常数复杂度,但是应该是比那两个多,详情参见侯捷的《STL源码剖析》。

(“数组”和“array”是两个概念,“哈希表”和“hash_map”也是两个概念,我都不知道该看你的标题,还是你的正文了。。。。。汗。。。。。。)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文