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

Revision 8201
Date
Committercu1017
Download
// Copyright 2026, University of Freiburg,
// Chair of Algorithms and Data Structures
// Author: Christoph Ullinger <ullingec@cs.uni-freiburg.de>

#include "./Array.h"


// ____________________________________________________________________________
template<typename T>
Array<T>::Array(T *array, int n) {
  size_ = n;
  elements_ = new T[n];
  for (int i = 0; i < n; ++i) {
    elements_[i] = array[i];
  }
}

// ____________________________________________________________________________
template<typename T>
Array<T>::~Array() { delete[] elements_; }

// ____________________________________________________________________________
template<typename T>
T Array<T>::operator[](int i) const { return elements_[i]; }

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

// ____________________________________________________________________________
Array<bool>::Array(bool *array, int n) {
  size_ = n;
  elements_ = 0;
  for (int i = 0; i < n; ++i) {
    if (array[i]) {
      elements_ |= 1 << i;
    }
  }
}

// ____________________________________________________________________________
Array<bool>::~Array() {}

// ____________________________________________________________________________
bool Array<bool>::operator[](int i) const {
  return elements_ >> i & 1;
}

// ____________________________________________________________________________
ArrayInt::ArrayInt(int *array, int n) {
  size_ = n;
  elements_ = new int[n];
  for (int i = 0; i < n; ++i) {
    elements_[i] = array[i];
  }
}

// ____________________________________________________________________________
ArrayInt::~ArrayInt() { delete[] elements_; }

// ____________________________________________________________________________
int ArrayInt::operator[](int i) const { return elements_[i]; }

// ____________________________________________________________________________
ArrayFloat::ArrayFloat(float *array, int n) {
  size_ = n;
  elements_ = new float[n];
  for (int i = 0; i < n; ++i) {
    elements_[i] = array[i];
  }
}

// ____________________________________________________________________________
ArrayFloat::~ArrayFloat() { delete[] elements_; }

// ____________________________________________________________________________
float ArrayFloat::operator[](int i) const { return elements_[i]; }