Don:
> When is it better to do it that way, rather than just iterating over all
> elements, and then completely empty the container?
> (Just curious -- I'm having trouble thinking of a use case for this
> feature).
I'm having troubles understanding why two persons have troubles seeing use
cases for this feature :-)
Iterating over the container and then emptying the container is two operations,
you have to keep in mind to empty it, while if you pop items out of it
progressively you just need to keep in mind to do one thing, and you avoid
forgetting the final cleaning.
Also, the progressive popping out of items allows you to have a collection that
is correct in every moment, there is no risk of "removing" two times an item,
so you can pass around the data structure in any moment of this process of
wearing it away.
This is what you suggest (Python code):
s = set(["ab", "bc", "de"])
def process_item(item):
print item
for item in s:
process_item(item)
s.clear() # removes all items
But this is better, you can print the correct collection in any moment and you
can't forget the final clear:
s = set(["ab", "bc", "de"])
def process_item(item):
print item
def show_data(items):
print items
while s:
process_item(s.pop())
show_data(s)
Bye,
bearophile