Front Page / Sequences / Classes / list

list

Description

A list is a variadic, forward, extensible sequence of types that supports constant-time insertion and removal of elements at the beginning, and linear-time insertion and removal of elements at the end and in the middle.

Header

Sequence form Header
Variadic #include <boost/mpl/list.hpp>
Numbered #include <boost/mpl/list/listn.hpp>

Model of

Expression semantics

In the following table, l is a list, pos and last are iterators into l, r is a Forward Sequence, and t1,t2,... tn and x are arbitrary types.

Expression Semantics
list<t1,t2,... tn>
listn<t1,t2,... tn>
list of elements t1,t2,... tn; see Variadic Sequence.
list<t1,t2,... tn>::type
listn<t1,t2,... tn>::type
Identical to listn<t1,t2,... tn>; see Variadic Sequence.
begin<l>::type An iterator to the beginning of l; see Forward Sequence.
end<l>::type An iterator to the end of l; see Forward Sequence.
size<l>::type The size of l; see Forward Sequence.
empty<l>::type A boolean Integral Constant c such that c::value == true if and only if l is empty; see Forward Sequence.
front<l>::type The first element in l; see Forward Sequence.
insert<l,pos,x>::type A new list of following elements: [begin<l>::type, pos), x, [pos, end<l>::type); see Extensible Sequence.
insert_range<l,pos,r>::type A new list of following elements: [begin<l>::type, pos), [begin<r>::type, end<r>::type) [pos, end<l>::type); see Extensible Sequence.
erase<l,pos>::type A new list of following elements: [begin<l>::type, pos), [next<pos>::type, end<l>::type); see Extensible Sequence.
erase<l,pos,last>::type A new list of following elements: [begin<l>::type, pos), [last, end<l>::type); see Extensible Sequence.
clear<l>::type An empty list; see Extensible Sequence.
push_front<l,x>::type A new list containing x as its first element; see Front Extensible Sequence.
pop_front<l>::type A new list containing all but the first elements of l in the same order; see Front Extensible Sequence.

Example

typedef list<float,double,long double> floats;
typedef push_front<floats,int>::type types;

BOOST_MPL_ASSERT(( is_same< front<types>::type, int > ));

See also

Sequences, Variadic Sequence, Forward Sequence, Extensible Sequence, vector, list_c