SVN / public / code / vorlesung-08 / Array.cpp

Revision 11340
Date
Committerhb1003
Download
// Copyright 2016, University of Freiburg,
// Chair of Algorithms and Data Structures.
// Author: Hannah Bast <bast@cs.uni-freiburg.de>.

#include "./Array.h"

// _____________________________________________________________________________
template<class T>
Array<T>::Array(T* array, int n) {
  _size = n;
  _elements = new T[_size];
  for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}

// _____________________________________________________________________________
template<class T>
Array<T>::~Array() {
  delete[] _elements;
}

// _____________________________________________________________________________
template<class T>
T Array<T>::get(int i) const {
  return _elements[i];
}

// Explicit instantiation.
template class Array<int>;
template class Array<float>;


// _____________________________________________________________________________
Array<bool>::Array(bool* array, int n) {
  _size = n;
  _elements = 0;
  for (int i = 0; i < _size; i++) {
    if (array[i]) {
      // Set the i-th bit of the _elements byte; see slide 17.
      _elements |= (1 << i);
    }
  }
}

// _____________________________________________________________________________
bool Array<bool>::get(int i) const {
  return (_elements & (1 << i)) == 0 ? false : true;
}




// OLD NON-TEMPLATED CODE

/*

// _____________________________________________________________________________
ArrayInt::ArrayInt(int* array, int n) {
  _size = n;
  _elements = new int[_size];
  for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}

// _____________________________________________________________________________
ArrayInt::~ArrayInt() {
  delete[] _elements;
}

// _____________________________________________________________________________
int ArrayInt::get(int i) const {
  return _elements[i];
}

// _____________________________________________________________________________
ArrayFloat::ArrayFloat(float* array, int n) {
  _size = n;
  _elements = new float[_size];
  for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}

// _____________________________________________________________________________
ArrayFloat::~ArrayFloat() {
  delete[] _elements;
}

// _____________________________________________________________________________
float ArrayFloat::get(int i) const {
  return _elements[i];
}

*/