Was ist ein Eigen :: Array (nicht Eigen :: Array)

Sep 02 2020

Ich verwende eine Eigentensorbibliothek und es scheint mir, dass die shuffle () -Methode als Eingabe ein Objekt Eigen :: array <type, int> haben möchte.

In meiner Implementierung habe ich eine std :: Liste von int, die ich zum Mischen übergeben muss (natürlich kenne ich den zweiten int-Parameter (den Rang) nur zur Laufzeit!)

Antworten

3 dtell Sep 02 2020 at 01:17

Vor nicht allzu langer Zeit war Eigens Tensor-Modul C ++ 03-kompatibel. Das bedeutet, dass dies std::arraynicht verfügbar ist. Aus diesem Grund hat das Tensor-Modul eine eigene Eigen::arrayKlasse definiert , die tatsächlich ein Typedef ist, std::arraywenn C ++ 11 verfügbar ist.

Die nicht unterstützte Datei / Eigen / CXX11 / src / util / EmulateArray.h enthält etwas, das auf (Pseudocode) hinausläuft.

#if C++11 not available
  // Define a custom std::array like Eigen::array class
#else
  template <typename T, std::size_t N> using array = std::array<T, N>;
#endif

Das Tensor-Modul hat die C ++ 03-Kompatibilität verloren und Teile dieses Codes könnten wahrscheinlich entfernt werden.