RWSortedVector(3C++)

RWSortedVector - Rogue Wave library class

As shipped in IRIX 6.5. First release of IRIX 6.5.

Name
     RWSortedVector - Rogue Wave library class

Synopsis
              #include <rw/sortvec.h>



              RWSortedVector a;




Description
     Class RWSortedVector represents a group of ordered items, internally
     sorted by the compareTo() function and accessible by an index number.
     Duplicates are allowed.  An object stored by RWSortedVector must inherit
     from the abstract base class RWCollectable.  An insertion sort is used to
     maintain the vector in sorted order.  Because class RWSortedVector is
     implemented as a vector of pointers, traversing the collection is more
     efficient than with class RWBinaryTree.  However, insertions are slower
     in the center of the collection.  Note that because the vector is sorted,
     you must not modify elements contained in the vector in such a way as to
     invalidate the ordering.

Persistence
     Polymorphic

Example
              sortvec.cpp



              #include <rw/sortvec.h>
          #include <rw/collstr.h>
          #include <rw/rstream.h>
          main(){
             RWSortedVector sv;
             sv.insert(new RWCollectableString("dog"));
             sv.insert(new RWCollectableString("cat"));
             sv.insert(new RWCollectableString("fish"));
             RWSortedVectorIterator next(sv);
             RWCollectableString* item;
             while( item = (RWCollectableString*)next() )
               cout << *item << endl;
             sv.clearAndDestroy();
          }


     Program output:

              cat
          dog
          fish

Public Constructors
              RWSortedVector(size_t size = RWDEFAULT_CAPACITY);


     Construct an empty RWSortedVector that has an initial capacity of size
     items.  The capacity will be increased automatically as needed.

Public Member Operators
              RWBoolean
          operator==(const RWSortedVector& sv) const;


     Returns TRUE if for every item in self, the corresponding item in sv at
     the same index is equal.  The two collections must also have the same
     number of members.

              const RWCollectable*
          operator[](size_t i);


     Returns the ith element in the collection.  If i is out of range, an
     exception of type RWBoundsErr will be thrown.  The return value cannot be
     used as an lvalue.

              const RWCollectable*
          operator()(size_t i);


     Returns the ith element in the collection.  Bounds checking is enabled by
     defining the preprocessor directive RWBOUNDS_CHECK before including the
     header file "rwsortvec.h".  In this case, if i is out of range, an
     exception of type RWBoundsErr will be thrown.  The return value cannot be
     used as an lvalue.

Public Member Functions
              virtual void
          apply(RWapplyCollectable ap, void* x);


     Inherited from class RWOrdered.

              virtual const RWCollectable*
          at(size_t i) const;


     Inherited from class RWOrdered.

              virtual RWspace
          binaryStoreSize() const;


     Inherited from class RWCollection.

              virtual void
          clear();


     Inherited from class RWOrdered.

              virtual void
          clearAndDestroy();


     Inherited from class RWCollection.

              virtual int
          compareTo(const RWCollectable* a) const;


     Inherited from class RWCollectable.

              virtual RWBoolean
          contains(const RWCollectable* target) const;


     Inherited from class RWCollection.

              virtual size_t
          entries() const;


     Inherited from class RWOrdered.

              virtual RWCollectable*
          find(const RWCollectable* target) const;


     Inherited from class RWOrdered.  Note that RWOrdered::find() uses the
     virtual function index() to perform its search.  Hence, a binary search
     will be used.

              virtual RWCollectable*
          first() const;


     Inherited from class RWOrdered.

              virtual unsigned
          hash() const;


     Inherited from class RWCollectable.

              virtual size_t
          index(const RWCollectable*) const;


     Redefined from class RWOrdered.  Performs a binary search to return the
     index of the first item that compares equal to the target item, or
     RW_NPOS if no such item can be found.

              virtual RWCollectable*
          insert(RWCollectable* c);


     Redefined from class RWOrdered.  Performs a binary search to insert the
     item pointed to by c after all items that compare less than or equal to
     it, but before all items that compare greater than it.  Returns nil if
     the insertion was unsuccessful, c otherwise.

              virtual RWClassID
          isA() const;


     Redefined from class RWCollectable to return __RWSORTEDVECTOR.

              virtual RWBoolean
          isEmpty() const;


     Inherited from class RWOrdered.

              virtual RWBoolean
          isEqual(const RWCollectable* a) const;


     Inherited from class RWCollectable.

              virtual RWCollectable*
          last() const;


     Inherited from class RWOrdered.

              virtual size_t
          occurrencesOf(const RWCollectable* target) const;


     Redefined from class RWOrdered.  Returns the number of items that compare
     equal to the item pointed to by target.

              virtual RWCollectable*
          remove(const RWCollectable* target);


     Inherited from class RWOrdered.  Note that RWOrdered::remove() uses the
     virtual function index() to perform its search.  Hence, a binary search
     will be used.

              virtual void
          removeAndDestroy(const RWCollectable* target);


     Inherited from class RWCollection.

              RWCollectable*
          removeAt(size_t index);


     Inherited from class RWOrdered.  Removes the item at the position index
     in the collection and returns it.