Re: std::string bad design????
Mirek Fidler wrote:
Le Chaud Lapin wrote:
James Kanze wrote:
Most of my containers
(non-tree) have indexing operations using unsigned int as the index, so
What is the point of maintaining internal iterators then?
The best I can say is that, for me, it creates the right "mood" when
using the containers.
For example, let's say you have a map, that maps names to telephone
numbers
Associative_Set::<String__, Phone_Number> phonebook;
// Add several entries to phonebook.
, and I want to change the telephone number of "Le Chaud Lapin".
Instead of having an "update key value function", I first "locate" the
row that contains my name, then assign to the right-hand-side of the
located element:
phonebook.locate("Le Chaud Lapin");
phonebook.RHE() = "08 70 35 19 38";
std::map has essentially the same thing using operator[], but there is
no memory of where the marker lies. And as far as the multiple
iterators situation, that is extremely rare in my code. I might use it
in GUI development, for example, then even then, I must use keys
instead of iterators because of the well-known GUI snapshot problem.
So have a bunch of ::seek_**** functions that move the internal marker
around. If you have a container that is not a sequence (this was the
word I was looking for instead of 'linear' earlier), then you cannot
use indexing. For example, you have a hierarchy, it does not make
sense to have an unsigned int index:
Hierarchy h;
h[8]; // Does not make sense.
(Other than that, welcome to U++ containers paradigm - using int as
index everywhere instead of iterators is what we do ;)
I noticed in your code that you use int throughout. Ever considered
unsigned int instead?
-Le Chaud Lapin-
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]