proper range usage
Alex via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Nov 3 01:12:34 PST 2015
On Tuesday, 3 November 2015 at 08:23:20 UTC, Ali Çehreli wrote:
> > "Programming in D" book (the revision of 2015-10-24)
>
> Oooh! That smells very fresh. :)
>
:)
> > In my case, the container class can't become empty. Even if
> it contains
> > one single element, in this case the example should return
> true for
> > begin == end, it is not empty.
>
> That problem is solved by the convention that 'end' is one
> beyond the last valid element. So, when there is only the
> element 42, then begin==42 and end==43. Only when the last
> element (42 in this case) is consumed, begin==end.
>
This part is dangerous, and I'm not sure how dangerous it is.
Now, I have to dive into my structure a little bit deeper:
Say, I have three classes:
class B //current structure
{
M[] _ms;
P[] _ps;
P[M] assoc;
}
struct M
{
int id;
alias id this;
}
struct P
{
int id;
alias id this;
int begin;
int end;
}
The idea is, that P structs are disjunct (and contigous, if this
does matter) arrays of M's. And the question is, what happens, if
I set the end property of a P to a number, which belongs to
another P.
At the current time class B contains arrays of different M's
(constant, big one, say order of 10^6 elements, elements itself
are not very large, say about 5 members and a bunch of properties
calculated at runtime) as well as an array of P's (at the
beginning not so big one, but growing fast) and the array of
associations between the M's and P's. In my program I implement
this array as int[int], and reassign the associated values at the
same time as the array of P's is growing.
Here I have to deliver the "buzz words", so I'm trying to
implement a set partition algorithm with disjoint sets. With the
standard question how to achieve the fastest cutting of the whole
array into its single components. The application in my case are
just some constraints which say, how the cutting is allowed.
> Such ranges are called generators.
ok, cool! Thx.
More information about the Digitalmars-d-learn
mailing list