Skip to content
Snippets Groups Projects
PODVector.h 813 B
Newer Older
/* Copyright (C) 2022 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Felix Weiglhofer [committer] */
#ifndef CBM_ALGO_BASE_POD_VECTOR_H
#define CBM_ALGO_BASE_POD_VECTOR_H

#include "util/PODAllocator.h"

#include <vector>

namespace cbm::algo
{
  /**
  * @brief PODVector is a std::vector that doesn't initialize its elements.
  */
  template<class T>
  using PODVector = std::vector<T, PODAllocator<T>>;

  template<typename T>
  std::vector<T> ToStdVector(const PODVector<T>& vec)
  {
    return std::vector<T>(vec.begin(), vec.end());
  }

  template<typename T>
  PODVector<T> ToPODVector(const std::vector<T>& vec)
  {
    return PODVector<T>(vec.begin(), vec.end());
  }

}  // namespace cbm::algo

#endif  // CBM_ALGO_BASE_POD_VECTOR_H