Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   queue, deque, priority_queue (http://www.velocityreviews.com/forums/t278658-queue-deque-priority_queue.html)

newsock 10-24-2003 12:11 AM

queue, deque, priority_queue
 
What differences between queue, deque and priority_queue? And under what
situations choose one of them to use? Thanks for your help!



Jerry Coffin 10-24-2003 06:05 AM

Re: queue, deque, priority_queue
 
In article <47_lb.190847$0v4.14787426@bgtnsc04-
news.ops.worldnet.att.net>, newsock@hotmail.com says...
> What differences between queue, deque and priority_queue? And under what
> situations choose one of them to use? Thanks for your help!


With a queue, you insert items at one and and extract them from the
other end -- i.e. you can ONLY get things out in the order in which they
were inserted.

With a deque, you can insert and/or remove from either end, so you get a
combination of stack behavior (remove the most recently inserted item)
or queue behavior (as above).

A priority queue is different from either of these. With a priority
queue, you specify an ordering by which items will be sorted. You
insert items and you remove items, but when you remove items, you get
them in sorted order. This is handy for things like tasks that have to
be completed. When a task arises that will need to be done, you put it
into the priority queue. When you're ready to carry out a task, you
pull one from the priority queue, and you'll get the highest priority
task that's waiting.

--
Later,
Jerry.

The universe is a figment of its own imagination.

Tim Clacy 10-24-2003 09:41 AM

Re: queue, deque, priority_queue
 
Jerry Coffin wrote:
> In article <47_lb.190847$0v4.14787426@bgtnsc04-
> news.ops.worldnet.att.net>, newsock@hotmail.com says...
>> What differences between queue, deque and priority_queue? And under
>> what situations choose one of them to use? Thanks for your help!

>
> With a queue, you insert items at one and and extract them from the
> other end -- i.e. you can ONLY get things out in the order in which
> they were inserted.
>
> With a deque, you can insert and/or remove from either end, so you
> get a combination of stack behavior (remove the most recently
> inserted item)
> or queue behavior (as above).
>
> A priority queue is different from either of these. With a priority
> queue, you specify an ordering by which items will be sorted. You
> insert items and you remove items, but when you remove items, you get
> them in sorted order. This is handy for things like tasks that have to
> be completed. When a task arises that will need to be done, you put
> it into the priority queue. When you're ready to carry out a task,
> you
> pull one from the priority queue, and you'll get the highest priority
> task that's waiting.


....'dequeue' is a particularly confusing choice of name; it stands for
Double-Ended Queue... but also means 'to remove from a queue' when used as a
verb.



Stewart Gordon 10-27-2003 06:17 PM

Re: queue, deque, priority_queue
 


While it was 24/10/03 10:41 am throughout the UK, Tim Clacy sprinkled
little black dots on a white screen, and they fell thus:

<snip>
> ...'dequeue' is a particularly confusing choice of name; it stands for
> Double-Ended Queue... but also means 'to remove from a queue' when used as a
> verb.


Where in the world does "dequeue" mean deque?

Stewart.

--
My e-mail is valid but not my primary mailbox. Please keep replies on
on the 'group where everyone may benefit.

Tim Clacy 10-29-2003 09:03 AM

Re: queue, deque, priority_queue
 
Stewart Gordon wrote:
> While it was 24/10/03 10:41 am throughout the UK, Tim Clacy sprinkled
> little black dots on a white screen, and they fell thus:
>
> <snip>
>> ...'dequeue' is a particularly confusing choice of name; it stands
>> for Double-Ended Queue... but also means 'to remove from a queue'
>> when used as a verb.

>
> Where in the world does "dequeue" mean deque?
>
> Stewart.



.... are you implying that that there is no ambiguity? In what way is 'deque'
sufficiently different from 'dequeue' that there is no ambiguity? Why not
post a .wav file so we can hear the difference?


I'm somewhat suprised that anyone could actually defend the unispired choice
of names used in this context; have you escaped from somewhere that had soft
walls?


// A double-ended queue (not to be confused with any common or garden queue
with, of course, also has two ends):
//
template<typename T>
struct dequeue
{
// A single ended queue (hmm, the word oxymoron springs to mind)
//
struct queue
{
void enque(T item);
T deque(); // Apparently, self-explanitory (despite the made-up
word 'que')
:
};
};


Mr Grodon; if you can't see any issue here, then I pity the poor souls who
have to fix your code.


Tim



Stewart Gordon 10-30-2003 02:40 PM

Re: queue, deque, priority_queue
 


While it was 29/10/03 9:03 am throughout the UK, Tim Clacy sprinkled
little black dots on a white screen, and they fell thus:
<snip>
> // A double-ended queue (not to be confused with any common or garden queue
> with, of course, also has two ends):
> //
> template<typename T>
> struct dequeue
> {
> // A single ended queue (hmm, the word oxymoron springs to mind)
> //
> struct queue
> {


Huh?

> void enque(T item);
> T deque(); // Apparently, self-explanitory (despite the made-up
> word 'que')
> :
> };
> };
>
>
> Mr Grodon; if you can't see any issue here, then I pity the poor souls who
> have to fix your code.


I pity the poor souls, which I believe exist in some programming
circles, who use "deque" as an abbreviation for "dequeue", presumably
unaware of what "deque" really means.

Stewart.

Tim Clacy 10-31-2003 09:25 AM

Re: queue, deque, priority_queue
 
Stewart Gordon wrote:
> While it was 29/10/03 9:03 am throughout the UK, Tim Clacy sprinkled
> little black dots on a white screen, and they fell thus:
> <snip>
>> // A double-ended queue (not to be confused with any common or
>> garden queue with, of course, also has two ends):
>> //
>> template<typename T>
>> struct dequeue
>> {
>> // A single ended queue (hmm, the word oxymoron springs to mind)
>> //
>> struct queue
>> {

>
> Huh?


Hmm, trying stringing some real words together to form a complete question
if you don't understand. My point is that all queues have two ends; in fact,
since there is no such thing as a single-ended queue, a double-ended queue
is a complete misnomer. Perhaps 'DualPortBuffer' might have been a better
choice of name. The lousy choice of name for an abstract-data-type is
further compounded by trying to squeeze in an operation name De-Queue (to
remove from the queue), but due to some unfathomable love of compounded,
lowercase mnemonics as identifier names, we have 'deque'. Why not use real
verbs instead of making your own up?

>
>> void enque(T item);
>> T deque(); // Apparently, self-explanitory (despite the
>> made-up word 'que')
>> :
>> };
>> };
>>
>>
>> Mr Grodon; if you can't see any issue here, then I pity the poor
>> souls who have to fix your code.

>
> I pity the poor souls, which I believe exist in some programming
> circles, who use "deque" as an abbreviation for "dequeue", presumably
> unaware of what "deque" really means.
>
> Stewart.


Anyone software developer from the civilised world who hadn't used STL
before would not understand what on Earth you ranting about with dequeue and
deque... which proves my point convincingly.


Tim



Tim Clacy 10-31-2003 09:31 AM

Re: queue, deque, priority_queue
 
Jerry Coffin wrote:
> In article <3f9f827d$0$257$4d4eb98e@news.dk.uu.net>,
> nospamtcl@nospamphaseone.nospamdk says...
>
> [ ... ]
>
>> ... are you implying that that there is no ambiguity? In what way is
>> 'deque' sufficiently different from 'dequeue' that there is no
>> ambiguity? Why not post a .wav file so we can hear the difference?

>
> In pronunciation, ambiguity is removed -- a double-ended queue is
> pronounced like "deck" while removing from a queue is pronounced like
> "DQ" (i.e. pronounce the names of the letters in quick succession,
> much
> the way an American teenager would refer to Dairy Queen).



Abreviations and corner cutting are the root of many a programming evil; one
of the objectives of using a high-level language over machine code is to
provide unambiguous, maintainable, sources instead of crude error-prone
mnemonics. Since most high level languages allow use of mixed case and have
limits for identifier names more than 8 letters, why would anyone not use:

struct DoubleEndedQueue
{
:
};

T Queue::RemoveFromFront() // Or Get, Pull, Pop... anything except made-up
words likke 'deque'
{
:
}

void Queue::AddToBack() // Or Put, Push, Add... anything except made-up
words like 'enque'
{
:
}

I suspect the American love of acronyms and short-cuts coupled with an
unhealthy disregard for standard spelling has a hand in this shoddy
workmanship; this is the country, after all, that even abbreviates USA to US
and gasoline to gas (the only country in the world where you can get wet
feet from spilling gas).


Tim



Gavin Deane 10-31-2003 02:47 PM

Re: queue, deque, priority_queue
 
"Tim Clacy" <nospamtcl@nospamphaseone.nospamdk> wrote in message news:<3fa22a96$0$265$4d4eb98e@news.dk.uu.net>...
> Stewart Gordon wrote:
> > While it was 29/10/03 9:03 am throughout the UK, Tim Clacy sprinkled
> > little black dots on a white screen, and they fell thus:
> > <snip>
> >> // A double-ended queue (not to be confused with any common or
> >> garden queue with, of course, also has two ends):
> >> //
> >> template<typename T>
> >> struct dequeue
> >> {
> >> // A single ended queue (hmm, the word oxymoron springs to mind)
> >> //
> >> struct queue
> >> {

> >
> > Huh?

>
> Hmm, trying stringing some real words together to form a complete question
> if you don't understand. My point is that all queues have two ends; in fact,
> since there is no such thing as a single-ended queue, a double-ended queue
> is a complete misnomer. Perhaps 'DualPortBuffer' might have been a better
> choice of name.


Perhaps. Though dual_port_buffer would be more in keeping with the
style of the rest of the language and library.

> The lousy choice of name for an abstract-data-type is
> further compounded by trying to squeeze in an operation name De-Queue (to
> remove from the queue), but due to some unfathomable love of compounded,
> lowercase mnemonics as identifier names, we have 'deque'. Why not use real
> verbs instead of making your own up?


Huh?

Unless I am missing part of the thread, it was you who brought up the
term 'to dequeue'. The C++ standard doesn't mention the word
(although, obviously the concept will be relevant to C++ programmers
using std::queue and std::deque).

Nobody is inventing verbs. The only invented word here is deque, which
is a noun.

> >> void enque(T item);
> >> T deque(); // Apparently, self-explanitory (despite the
> >> made-up word 'que')
> >> :
> >> };
> >> };
> >>
> >>
> >> Mr Grodon; if you can't see any issue here, then I pity the poor
> >> souls who have to fix your code.

> >
> > I pity the poor souls, which I believe exist in some programming
> > circles, who use "deque" as an abbreviation for "dequeue", presumably
> > unaware of what "deque" really means.
> >
> > Stewart.

>
> Anyone software developer from the civilised world who hadn't used STL
> before would not understand what on Earth you ranting about with dequeue and
> deque... which proves my point convincingly.


I would hope that any software developer who had never used STL
before, then came across std::deque, might look it up to find out what
it is. I believe 'deque' is used as a noun to mean 'double ended
queue' (misnomer or otherwise) outside of just the C++ standard
library. I have never encountered the verb 'deque' as an abbreviation
for 'dequeue' outside of your code above.

GJD

Tim Clacy 10-31-2003 03:16 PM

Re: queue, deque, priority_queue
 
Gavin Deane wrote:
> "Tim Clacy" <nospamtcl@nospamphaseone.nospamdk> wrote in message
> news:<3fa22a96$0$265$4d4eb98e@news.dk.uu.net>...
>> Stewart Gordon wrote:
>>> While it was 29/10/03 9:03 am throughout the UK, Tim Clacy sprinkled
>>> little black dots on a white screen, and they fell thus:
>>> <snip>
>>>> // A double-ended queue (not to be confused with any common or
>>>> garden queue with, of course, also has two ends):
>>>> //
>>>> template<typename T>
>>>> struct dequeue
>>>> {
>>>> // A single ended queue (hmm, the word oxymoron springs to
>>>> mind) //
>>>> struct queue
>>>> {
>>>
>>> Huh?

>>
>> Hmm, trying stringing some real words together to form a complete
>> question
>> if you don't understand. My point is that all queues have two ends;
>> in fact,
>> since there is no such thing as a single-ended queue, a double-ended
>> queue
>> is a complete misnomer. Perhaps 'DualPortBuffer' might have been a
>> better
>> choice of name.

>
> Perhaps. Though dual_port_buffer would be more in keeping with the
> style of the rest of the language and library.
>
>> The lousy choice of name for an abstract-data-type is
>> further compounded by trying to squeeze in an operation name
>> De-Queue (to
>> remove from the queue), but due to some unfathomable love of
>> compounded,
>> lowercase mnemonics as identifier names, we have 'deque'. Why not
>> use real
>> verbs instead of making your own up?

>
> Huh?
>
> Unless I am missing part of the thread, it was you who brought up the
> term 'to dequeue'. The C++ standard doesn't mention the word
> (although, obviously the concept will be relevant to C++ programmers
> using std::queue and std::deque).
>
> Nobody is inventing verbs. The only invented word here is deque, which
> is a noun.



I had muddled deque and dequeue... which kind of proves the point. To
clarify, these are the words in question:

queue - noun
deque - noun (made up name)
dequeue - verb (or noun depending on library)
enqueue - verb (verb)

My original point was simply if 'queue' is a Queue ADT, then one might
reasonably expect a double-ended Queue to be called 'dequeue'... but no, a
double-ended Queue ADT is called deque... because 'dequeue' has already been
used up as a verb. I find it all quite a laughable shambles; this is the
kind of mess that is inevitable when you favour mnemonics of meaningful
names.

However, the plot thickens... If you google C++ deque dequeue, you'll find
many examples of libraries using 'dequeue' as a name of the double-ended
queue ADT... and also STL tutorials using dequeue as the double-ended queue
ADT!


>>>> void enque(T item);
>>>> T deque(); // Apparently, self-explanitory (despite the
>>>> made-up word 'que')
>>>> :
>>>> };
>>>> };
>>>>
>>>>
>>>> Mr Grodon; if you can't see any issue here, then I pity the poor
>>>> souls who have to fix your code.
>>>
>>> I pity the poor souls, which I believe exist in some programming
>>> circles, who use "deque" as an abbreviation for "dequeue",
>>> presumably
>>> unaware of what "deque" really means.
>>>
>>> Stewart.

>>
>> Anyone software developer from the civilised world who hadn't used
>> STL
>> before would not understand what on Earth you ranting about with
>> dequeue and
>> deque... which proves my point convincingly.

>
> I would hope that any software developer who had never used STL
> before, then came across std::deque, might look it up to find out what
> it is. I believe 'deque' is used as a noun to mean 'double ended
> queue' (misnomer or otherwise) outside of just the C++ standard
> library. I have never encountered the verb 'deque' as an abbreviation
> for 'dequeue' outside of your code above.
>
> GJD





All times are GMT. The time now is 05:46 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.