...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
vector is a Random Access Sequence of heterogenous typed data structured as a simple struct where each element is held as a member variable. vector is the simplest of the Fusion sequence container, and in many cases the most efficient.
#include <boost/fusion/container/vector.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/container/vector/vector_fwd.hpp> #include <boost/fusion/include/vector_fwd.hpp> // numbered forms #include <boost/fusion/container/vector/vector10.hpp> #include <boost/fusion/include/vector10.hpp> #include <boost/fusion/container/vector/vector20.hpp> #include <boost/fusion/include/vector20.hpp> #include <boost/fusion/container/vector/vector30.hpp> #include <boost/fusion/include/vector30.hpp> #include <boost/fusion/container/vector/vector40.hpp> #include <boost/fusion/include/vector40.hpp> #include <boost/fusion/container/vector/vector50.hpp> #include <boost/fusion/include/vector50.hpp>
Numbered forms
template <> struct vector0; template <typename T0> struct vector1; template <typename T0, typename T1> struct vector2; template <typename T0, typename T1, typename T2> struct vector3; ... template <typename T0, typename T1, typename T2..., typename TN> struct vectorN;
Variadic form
template < typename T0 = unspecified , typename T1 = unspecified , typename T2 = unspecified ... , typename TN = unspecified > struct vector;
The numbered form accepts the exact number of elements. Example:
vector3<int, char, double>
The variadic form accepts 0 to FUSION_MAX_VECTOR_SIZE elements, where FUSION_MAX_VECTOR_SIZE is a user definable predefined maximum that defaults to 10. Example:
vector<int, char, double>
You may define the preprocessor constant FUSION_MAX_VECTOR_SIZE before including any Fusion header to change the default. Example:
#define FUSION_MAX_VECTOR_SIZE 20
Parameter |
Description |
Default |
---|---|---|
T0...TN |
Element types |
unspecified |
Notation
Instance of vector
A vector type
Heterogeneous values
Semantics of an expression is defined only where it differs from, or is not defined in Random Access Sequence.
Expression |
Semantics |
---|---|
V() |
Creates a vector with default constructed elements. |
V(e0, e1,... en) |
Creates a vector with elements e0...en. |
V(s) |
Copy constructs a vector from a Forward Sequence, s. |
v = s |
Assigns to a vector, v, from a Forward Sequence, s. |
vector<int, float> v(12, 5.5f); std::cout << at_c<0>(v) << std::endl; std::cout << at_c<1>(v) << std::endl;