5 #ifndef __pinocchio_container_aligned_vector_hpp__
6 #define __pinocchio_container_aligned_vector_hpp__
9 #include <Eigen/StdVector>
11 #define PINOCCHIO_ALIGNED_STD_VECTOR(Type) \
12 ::pinocchio::container::aligned_vector<Type>
28 typedef ::std::vector<T, Eigen::aligned_allocator<T> > vector_base;
29 typedef const vector_base & const_vector_base_ref;
30 typedef vector_base & vector_base_ref;
33 typedef typename vector_base::allocator_type allocator_type;
34 typedef typename vector_base::size_type size_type;
35 typedef typename vector_base::iterator iterator;
37 explicit aligned_vector(
const allocator_type & a = allocator_type()) : vector_base(a) {}
38 template<
typename InputIterator>
39 aligned_vector(InputIterator first, InputIterator last,
const allocator_type& a = allocator_type())
40 : vector_base(first, last, a) {}
43 : vector_base(num, val) {}
46 aligned_vector(iterator start, iterator end) : vector_base(start, end) {}
48 { vector_base::operator=(x);
return *
this; }
50 vector_base & base() {
return *
static_cast<vector_base*
>(
this); }
51 const vector_base & base()
const {
return *
static_cast<const vector_base*
>(
this); }
58 return lhs.base() == rhs.base();
65 #endif // ifndef __pinocchio_container_aligned_vector_hpp__