w****o 发帖数: 2260 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: winhao (勇敢的人), 信区: JobHunting
标 题: 问一下STL里的queue, and stack 遍历的问题
发信站: BBS 未名空间站 (Sun Mar 4 02:36:31 2012, 美东)
好像std里queue 和stack的实现没有提供iterator,怎么遍历呢?就是说怎么查看queue
,stack里的elements?
感觉没法弄。比如queue,除非把queue给弄散了,一个一个的 front(), pop(),来查看
里面的东西,可是这样的话,queue就给破坏了。
stack也有同样的问题。
谁给说说有什么好的方法?难道要自己新创造一个实现?
谢谢! | t****t 发帖数: 6806 | 2 why do you want to use queue/stack in the first place, if you don't need a
queue or stack?
in other words, queue and stack are supposed to visited FIFO or LIFO. if you
want iterator, use deque or vector; they have all the functions of queue or
stack, while having iterators.
queue
【在 w****o 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: winhao (勇敢的人), 信区: JobHunting : 标 题: 问一下STL里的queue, and stack 遍历的问题 : 发信站: BBS 未名空间站 (Sun Mar 4 02:36:31 2012, 美东) : 好像std里queue 和stack的实现没有提供iterator,怎么遍历呢?就是说怎么查看queue : ,stack里的elements? : 感觉没法弄。比如queue,除非把queue给弄散了,一个一个的 front(), pop(),来查看 : 里面的东西,可是这样的话,queue就给破坏了。 : stack也有同样的问题。 : 谁给说说有什么好的方法?难道要自己新创造一个实现?
| w****o 发帖数: 2260 | 3 谢谢!
1. 其实吧,在看别人的代码,想加点自己的代码,试些东西,他们用了queue,我想在
某个特定的情况下,想看一下到底queue放了些什么东西,或者是想看看里面有没有满
足某些条件的元素。
2. 你说的对,vector, deque都有iterator,如果要方便的话,就用这些好了。
还有,我得出了结论,stl里的container并不是每个都有iterator的。
谢谢啦!
you
or
【在 t****t 的大作中提到】 : why do you want to use queue/stack in the first place, if you don't need a : queue or stack? : in other words, queue and stack are supposed to visited FIFO or LIFO. if you : want iterator, use deque or vector; they have all the functions of queue or : stack, while having iterators. : : queue
| t****t 发帖数: 6806 | 4 all containers have iterator, because it's a requirement for container.
queue, stack, priority_queue are not container, but rather container ADAPTOR
. (23.4)
to check container adaptor contents w/o modifying program, use debugger.
to check container adaptor contents w/ modifying program, you can:
(1) write a class to inherit the adaptor. All adaptors have a protected
member "c" which is the actual container.
(2) use the container to replace the adaptor, and replace the push(), pop()
etc with your own code -- they are one-liners anyway.
【在 w****o 的大作中提到】 : 谢谢! : 1. 其实吧,在看别人的代码,想加点自己的代码,试些东西,他们用了queue,我想在 : 某个特定的情况下,想看一下到底queue放了些什么东西,或者是想看看里面有没有满 : 足某些条件的元素。 : 2. 你说的对,vector, deque都有iterator,如果要方便的话,就用这些好了。 : 还有,我得出了结论,stl里的container并不是每个都有iterator的。 : 谢谢啦! : : you : or
| c****p 发帖数: 6474 | 5 笨办法就是想看queue的时候再弄个queue,想看栈的时候再弄个栈。。。
ADAPTOR
)
【在 t****t 的大作中提到】 : all containers have iterator, because it's a requirement for container. : queue, stack, priority_queue are not container, but rather container ADAPTOR : . (23.4) : to check container adaptor contents w/o modifying program, use debugger. : to check container adaptor contents w/ modifying program, you can: : (1) write a class to inherit the adaptor. All adaptors have a protected : member "c" which is the actual container. : (2) use the container to replace the adaptor, and replace the push(), pop() : etc with your own code -- they are one-liners anyway.
| h**********c 发帖数: 4120 | | h*******s 发帖数: 8454 | 7 我每次想用queue的时候,最后好像都用了deque。。。
【在 c****p 的大作中提到】 : 笨办法就是想看queue的时候再弄个queue,想看栈的时候再弄个栈。。。 : : ADAPTOR : )
| w****o 发帖数: 2260 | 8 谢谢了!你是牛人。
【在 t****t 的大作中提到】 : all containers have iterator, because it's a requirement for container. : queue, stack, priority_queue are not container, but rather container ADAPTOR : . (23.4) : to check container adaptor contents w/o modifying program, use debugger. : to check container adaptor contents w/ modifying program, you can: : (1) write a class to inherit the adaptor. All adaptors have a protected : member "c" which is the actual container. : (2) use the container to replace the adaptor, and replace the push(), pop() : etc with your own code -- they are one-liners anyway.
|
|