Simple IFTI use
    Kevin Bealer 
    Kevin_member at pathlink.com
       
    Sun Apr  2 22:19:38 PDT 2006
    
    
  
Often when working with D arrays, I miss the "doubling" effect of push_back from
C++ std::vector.  With IFTI, this is possible (trivial, really) in D.  I put
some code here - the idea is to use existing arrays, no special classes, but
have an "append" functionality, like vector::push_back().
: // -*- c++ -*-
:
: import std.string;
:
: template push_back(T) {
:     // The first arg is inout only for performance reasons.
:
:     void push_back(inout T elem, inout T[] vec, inout int vsize)
:     {
:         assert(vec.length >= vsize);
:
:         if (vec.length != vsize) {
:             vec.length = (vec.length
:                           ? vec.length * 2
:                           : 4); // arbitrary
:         }
:
:         vec[vsize++] = elem;
:     }
: };
:
: // Usage
:
: import simplevec;
:
: Foo[] stuff; int stuff_size;
:
: Foo f = new Foo;
:
: push_back(f, stuff, stuff_size);
Kevin
    
    
More information about the Digitalmars-d
mailing list