Container access in std.container

Jonathan M Davis jmdavisProg at gmx.com
Tue Mar 29 01:49:41 PDT 2011


On 2011-03-29 01:38, Ishan Thilina wrote:
> == Quote from Steven Wawryk (stevenw at acres.com.au)'s article
> 
> > Your environment looks wrong.  Note that
> > /usr/lib/gcc/x86_64-linux-gnu/4.3.5/../../../../include/d/4.3.5
> > is equivalent to
> > /usr/include/d/4.3.5
> > so I expect it can't find container.d
> > 
> > On 29/03/11 04:54, Ishan Thilina wrote:
> > > I am using DGC due to the problems I'm witnessing with DMD. I tried a
> > > similar approach. But the following error comes.
> > > 
> > > "
> > > 
> > > structures.d:4: Error: module container cannot read file
> > > 'std/container.d' import path[0] =
> > > /usr/lib/gcc/x86_64-linux-gnu/4.3.5/../../../../include/d/4.3.5/x86_64-
> > > linux-gnu import path[1] =
> > > /usr/lib/gcc/x86_64-linux-gnu/4.3.5/../../../../include/d/4.3.5
> > > 
> > > "
> > > 
> > > I dont know what is wrong. I'll try to compile in Windows and let you
> > > know.
> > > 
> > > @David :
> > > 
> > > Thanks for the clarifications :)
> >
> >structures.d:4: Error: module container cannot read file 'std/container.d'
> >import path[0] =
> >/usr/lib/gcc/x86_64-linux-gnu/4.3.5/../../../../include/d/4.3.5/x86_64-lin
> >ux-gnu import path[1] =
> >/usr/lib/gcc/x86_64-linux-gnu/4.3.5/../../../../include/d/4.3.5
> 
> Ok, now std.container can be imported inside windows. The problem has been
> that windows has used dmd to compile rather than using dmd2.
> But I get an error message. I think it's what davis said.
> 
> >On 2011-03-28 07:48, David Nadlinger wrote:
> >> ---
> >> import std.container;
> >> import std.stdio;
> >> 
> >> void main() {
> >> 
> >>      auto rb = redBlackTree(4, 1, 2, 3);
> >>      foreach (e; rb) {
> >>      
> >>          writeln(e);
> >>      
> >>      }
> >> 
> >> }
> >> ---
> >
> >I believe that the redBlackTree function is only in the git repository at
> >present (so, it'll be in the next release), so if he's using dmd 2.052,
> >that particular way of creating a RedBlackTree won't work.
> 
> So how can I declare a redBlackTree..?
> 
> 
> 
> It seems that there's no importing problem inside windows now. But the
> problem still there in Linux. I'm using GDC to compile.

I believe that you'd just do

auto rb = RedBlackTree(4, 1, 2, 3);

The problem with the version in dmd 2.052 though is that you can declare one 
if there isn't anything in it. Or at least, if you do, you'll run into 
problems, because it won't have been properly initialized (due to the lack of 
default constructor).

The version in git (which can be gotten here if you want to try it out: 
https://github.com/D-Programming-Language/phobos/ - though given how much 
trouble that you've been having getting dmd to work, I'm not sure that you 
want to try building druntime and Phobos yourself) changes RedBlackTree to a 
class, which fixes the problem. And by adding the function redBlackTree, it 
manages to make creating one a lot more flexible. The current version should 
work just fine though. It just isn't quite as nice (but the first version of 
Phobos with RedBlackTree was either 2.051 or 2.052, so it's a quite recent 
addition to std.container).

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list