preview

A Description Of Jaggedarray

Decent Essays

#ifndef _jagged_array_h_
#define _jagged_array_h_

#include (-- removed HTML --)
#include (-- removed HTML --)
#include (-- removed HTML --)
#include (-- removed HTML --)
#include (-- removed HTML --)
#include (-- removed HTML --)

template (-- removed HTML --) class JaggedArray {

public: typedef unsigned int size_type;

//CONSTRUCTORS, ASSIGNMENT OPERATOR, & DESTRUCTOR JaggedArray(size_type n) { this->create(n); } JaggedArray(const JaggedArray& ja) { copy(ja); } JaggedArray& operator=(const JaggedArray& ja); ~JaggedArray() { destroy(); }

// ACCESSORS bool isPacked() const; size_type numElements() const { return num_elements; } size_type numBins() const { return num_bins; } size_type …show more content…

OR DESTRUCTOR & ASSIGNMENT OPERATOR template (-- removed HTML --) void JaggedArray (-- removed HTML --) ::destroy() { if (isPacked()) { assert (unpacked_values == NULL); assert (counts == NULL); assert (packed_values != NULL); assert (offsets != NULL); delete [] offsets; delete [] packed_values; } else { assert (packed_values == NULL); assert (offsets == NULL); assert (unpacked_values != NULL); assert (counts != NULL); for (unsigned int i = 0; i < num_bins; i++) { delete [] unpacked_values[i]; } delete [] unpacked_values; delete [] counts; }
}

// ASSIGNMENT OPERATOR template (-- removed HTML --) JaggedArray (-- removed HTML --) & JaggedArray (-- removed HTML --) ::operator=(const JaggedArray (-- removed HTML --) & v) { // check for self-assignment if (this != &v) { destroy(); this->copy(v); } return *this;
}

// HELPER FUNCTION FOR COPY CONSTRUCTOR & ASSIGNMENT OPERATOR template (-- removed HTML --) void JaggedArray (-- removed HTML --) ::copy(const JaggedArray (-- removed HTML --) & v) { num_bins = v.num_bins; num_elements = v.num_elements; if (v.isPacked()) { // if it's a packed structure offsets = new size_type[num_bins]; packed_values = new T[num_elements]; for (unsigned int b = 0; b < num_bins; b++) { offsets[b] = v.offsets[b]; } for (unsigned int i = 0; i < num_elements; i++) { packed_values[i] = v.packed_values[i]; }

Get Access