Qu'est-ce qu'un Eigen :: array (pas Eigen :: Array)

Sep 02 2020

J'utilise la bibliothèque de tenseurs propres et il me semble que la méthode shuffle () veut comme entrée un objet Eigen :: array <type, int>.

Dans mon implémentation, j'ai une std :: list de int que je dois passer au shuffle (bien sûr, je ne connais le deuxième paramètre int (le rang) qu'au moment de l'exécution!)

Réponses

3 dtell Sep 02 2020 at 01:17

Il n'y a pas si longtemps, le module Tensor d'Eigen était compatible C ++ 03. Cela implique que ce std::arrayn'est pas disponible. Pour cette raison, le module Tensor a défini sa propre Eigen::arrayclasse qui est en fait un typedef std::arraysi C ++ 11 est disponible.

Le fichier non pris en charge / Eigen / CXX11 / src / util / EmulateArray.h contient quelque chose qui se résume à (pseudo-code)

#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

Le module Tensor a abandonné la compatibilité C ++ 03 et des parties de ce code pourraient probablement être supprimées.