O que é um Eigen :: array (não Eigen :: Array)

Sep 02 2020

Estou usando a biblioteca de tensores eigen e me parece que o método shuffle () quer como entrada um objeto Eigen :: array <type, int>.

Em minha implementação, tenho uma std :: list de int que preciso passar para embaralhar (é claro que conheço o segundo parâmetro int (a classificação) apenas em tempo de execução!

Respostas

3 dtell Sep 02 2020 at 01:17

Não muito tempo atrás, o módulo Tensor de Eigen era compatível com C ++ 03. Isso significa que std::arraynão está disponível. Por esse motivo, o módulo Tensor definiu sua própria Eigen::arrayclasse que é na verdade um typedef para std::arrayse C ++ 11 estiver disponível.

O arquivo não suportado / Eigen / CXX11 / src / util / EmulateArray.h contém algo que se resume a (pseudo-código)

#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

O módulo Tensor eliminou a compatibilidade com C ++ 03 e partes deste código provavelmente podem ser removidas.