MultiArray: a C++ library for generic programming with arrays

  title={MultiArray: a C++ library for generic programming with arrays},
  author={Ronald Garcia and Andrew Lumsdaine},
  journal={Software: Practice and Experience},
In C++, multi‐dimensional arrays are often used but the language provides limited native support for them. The language, in its Standard Library, supplies sophisticated interfaces for manipulating sequential data, but relies on its bare‐bones C heritage for arrays. The MultiArray library, a part of the Boost library collection, enhances a C++ programmer's tool set with versatile multi‐dimensional array abstractions. It includes a general array class template and native array adaptors that… Expand

Topics from this paper

Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x
The new implementation called Marray is a package of class templates that brings some of the flexibility known from script languages such as R and MATLAB to C++, and is based on views as an underlying concept. Expand
Array Operators Using Multiple Dispatch: A design methodology for array implementations in dynamic languages
This work has come to believe that while multiple dispatch has not been especially popular in most kinds of programming, technical computing is its killer application, and has developed an approach that yields a novel trade-off between flexibility and compile-time analysis. Expand
The C++0x "Concepts" Effort
The article describes the design space for constrained parametric polymorphism, or what is colloquially know as constrained generics, and describes the technical challenges and debates within the "concepts" effort in the years 2003 to 2009. Expand
Static computation and reflection
This thesis presents the design of a foundational programming language, motivated by the analysis of template metaprogramming, that allows programs to statically inspect type information, perform computations, and generate code. Expand
Generic Programming with Concepts
A formal semantics of the separate type checking with concepts is provided, and a conceptual change impact analysis for generic libraries and a tool for performance-based component composition are described. Expand
Generic programming in the mCRL2 toolset
This paper reports on experiences with generic programming in C++ as applied in the implementation of the mCRL2 tool set, and uses a portable library for concept checking. Expand
A Flexible Dynamic Data Structure for Scientific Computing
This work presents an approach for a generic, multi-dimensional run-time data structure suitable for high-performance scientific computing in C++ and shows that it is not only highly flexible but also offers high- performance data access by simultaneously relying on a small code base. Expand
TLib: A Flexible C++ Tensor Framework for Numerical Tensor Calculus
TLib, flexible Tensor framework with generic tensor functions and tensor classes that assists users to implement generic and flexible tensor algorithms in C++ is presented. Expand
Generic programming in Fortran
The extensions of Parametric Fortran by two new language features, accessors and list parameters, particularly address the code duplication problem, which is a major problem in the context of scientific computing. Expand
The landscape of software for tensor computations
The aim is to assemble a comprehensive and up-to-date snapshot of the tensor software landscape, with the intention of helping both users and developers. Expand