// The vector interface heirachy
//
// VectorExpression
// | |
// | Distributed
// |
// Local - defines iterators
// | |
// | Compressed - generic sparse vector
// | |
// | Injective - sparse vector, unique indices
// | | |
// | | Hashed - hashed vector, O(1) lookup
// | |
// | Ordered - sparse vector, ordered by index
// | |
// | Search - ordered vector with O(log N) lookup
// |
// Dense - generic dense vector, random access
// |
// Stride - direct pointer access, but non-trivial stride
// |
// Contiguous - direct pointer access, contiguous
//