Apêndice E. Operações com valarray e matrizes
Tal como mencionado no Capítulo 8, uma classe de contentor da Biblioteca Standard separada da STL, std::valarray, remonta ao C++98. Suporta operadores aritméticos e fornece "para computação numérica quando a eficiência em tempo de execução é mais importante do que a flexibilidade no que diz respeito a operações e tipos de elementos".1 Com as funções de corte e de cadeia que também acompanham a classe valarray, também pode facilitar a representação de matrizes de dimensões superiores - em particular, uma matriz (bidimensional).
Embora o valarray tenha essas propriedades muito úteis que parecem torná-lo uma escolha óbvia para a matemática matricial, ele tem sido alvo de críticas mistas. Esta reação remonta à sua especificação original, que nunca foi totalmente concluída devido a debates sobre a necessidade de exigir a implementação utilizando modelos de expressão, uma nova técnica na altura que poderia otimizar significativamente o desempenho. No final, isso não foi obrigatório. Como resultado, "as implementações iniciais eram lentas e, por isso, os utilizadores não queriam confiar nelas".2
Mais informações sobre a história de valarray são discutidas na Secção 27.4 de C++ Templates: The Complete Guide, 2ª edição, de David Vandevoorde et al. (Addison-Wesley, 2017). Também podes encontrar detalhes adicionais sobre valarray na Secção S.2 do capítulo suplementar online de TheC++ Standard Library: A Tutorial and Reference, 2ª edição, de Nicolai ...