C++中vector与queue的区别?

键盘国治理专家 2020-03-20 08:13:40
请问这两个有什么具体而微的区别吗?

struct node{
int x;
int y;
int m; //月份
};
vector<node> grass;
queue<node> q;
grass.push_back({i,j,0}); //草地的初始化
q.push({netx,nety,now.m + 1});//准备下个月长草

在写蓝桥杯的长草的那道题,在自己复写的时候,有些分不清vector和queue,又请问这二者有没有更通用的呢?或者什么时候用vector,又什么时候用queue呢?
谢谢大家的指点,万分感谢。
...全文
1364 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 千梦一生 的回复:
vector queue list那些的区别,网上一搜一大堆,我也是尝试学习过好些次。久了又不用,又得忘记。忘记了要用的时候又拿出来学一下。
其实也就那样。
后面是非客观看法:
我觉得stl肯定是大佬们写的,那不用多说了。即便是算同样的算法,也许我们的实现也是有可能会可能差上那么一丢丢的。
但是!转折。那东西设计之初就是为了一个很强的适应性、兼容性作为理念之一进行设计的。
所以,在实际使用中,特别是一些特殊情景中,其效率可能就不一定能说有专门为该场景设计的数据结构工具那么高了。

所以当真有很强的效率要求,实际上最好是自己设计自己弄一个。
一般场景的话,习惯用了、会用的话,那用这个方便啊,快啊。
不用自己new一个节点,然后插入删除。
----------------------------------
我自己呢,哎,觉得很多轮子啊功能强大是强大。使用说明书看一两页就能使用出其70%能力。但要完全发挥它100%的能力,可能就要先读完并理解其1000页的说明书。
比如使用中某个地方不懂、或者出问题了。不是没有教你,只是要去翻阅大量的使用说明,注意事项...

好的谢谢,能够理解这二者的区别了
  • 打赏
  • 举报
回复
引用 2 楼 真相重于对错 的回复:
queue 先进先出,vector类似于数组,可以从任意位置访问元素。他们有不同的环境。
而且他们提供了源代码,有什么不懂可以看代码?
多说一句,要想看源码,要把c++泛型编程学好。。。

好的谢谢您,不过源码的确看起来很难懂,很多下划线,又有长有短。
千梦一生 2020-03-20
  • 打赏
  • 举报
回复
vector queue list那些的区别,网上一搜一大堆,我也是尝试学习过好些次。久了又不用,又得忘记。忘记了要用的时候又拿出来学一下。
其实也就那样。
后面是非客观看法:
我觉得stl肯定是大佬们写的,那不用多说了。即便是算同样的算法,也许我们的实现也是有可能会可能差上那么一丢丢的。
但是!转折。那东西设计之初就是为了一个很强的适应性、兼容性作为理念之一进行设计的。
所以,在实际使用中,特别是一些特殊情景中,其效率可能就不一定能说有专门为该场景设计的数据结构工具那么高了。

所以当真有很强的效率要求,实际上最好是自己设计自己弄一个。
一般场景的话,习惯用了、会用的话,那用这个方便啊,快啊。
不用自己new一个节点,然后插入删除。
----------------------------------
我自己呢,哎,觉得很多轮子啊功能强大是强大。使用说明书看一两页就能使用出其70%能力。但要完全发挥它100%的能力,可能就要先读完并理解其1000页的说明书。
比如使用中某个地方不懂、或者出问题了。不是没有教你,只是要去翻阅大量的使用说明,注意事项...
真相重于对错 2020-03-20
  • 打赏
  • 举报
回复
queue 先进先出,vector类似于数组,可以从任意位置访问元素。他们有不同的环境。 而且他们提供了源代码,有什么不懂可以看代码? 多说一句,要想看源码,要把c++泛型编程学好。。。
  • 打赏
  • 举报
回复
有没有STL底层实现的讲解呢?感觉STL和特殊工具没有太大区别,特别是它的通用性和速度,还比自己写的东西更快对吗?
有一个说法是这些STL都是世界各地的算法大师编写的,所以非常的流畅,
那底层的实现应该会脱离C本身吧?是不是用到了汇编呢?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧