pinocchio  2.1.3
container/aligned-vector.hpp
1 //
2 // Copyright (c) 2016-2017 CNRS
3 //
4 
5 #ifndef __pinocchio_container_aligned_vector_hpp__
6 #define __pinocchio_container_aligned_vector_hpp__
7 
8 #include <vector>
9 #include <Eigen/StdVector>
10 
11 namespace pinocchio
12 {
13  namespace container
14  {
20  template<typename T>
21  struct aligned_vector : public std::vector<T, Eigen::aligned_allocator<T> >
22  {
23  typedef ::std::vector<T, Eigen::aligned_allocator<T> > vector_base;
24  typedef T value_type;
25  typedef typename vector_base::allocator_type allocator_type;
26  typedef typename vector_base::size_type size_type;
27  typedef typename vector_base::iterator iterator;
28 
29  explicit aligned_vector(const allocator_type & a = allocator_type()) : vector_base(a) {}
30  template<typename InputIterator>
31  aligned_vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type())
32  : vector_base(first, last, a) {}
33  aligned_vector(const aligned_vector & c) : vector_base(c) {}
34  explicit aligned_vector(size_type num, const value_type & val = value_type())
35  : vector_base(num, val) {}
36  aligned_vector(iterator start, iterator end) : vector_base(start, end) {}
37  aligned_vector & operator=(const aligned_vector& x)
38  { vector_base::operator=(x); return *this; }
39 
40  vector_base & base() { return *static_cast<vector_base*>(this); }
41  const vector_base & base() const { return *static_cast<const vector_base*>(this); }
42 
43  }; // struct aligned_vector
44 
45  template<class T>
46  bool operator==(const aligned_vector<T>& lhs, const aligned_vector<T>& rhs)
47  {
48  typedef typename aligned_vector<T>::vector_base vector_base;
49  return *static_cast<const vector_base*>(&lhs) == *static_cast<const vector_base*>(&rhs);
50  }
51 
52  } // namespace container
53 
54 } // namespace pinocchio
55 
56 #endif // ifndef __pinocchio_container_aligned_vector_hpp__
Specialization of an std::vector with an aligned allocator. This specialization might be used when th...
Main pinocchio namespace.
Definition: treeview.dox:24