GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
FastList.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
19 #pragma once
20 
22 #include <list>
23 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
24 #include <boost/serialization/nvp.hpp>
25 #include <boost/serialization/version.hpp>
26 #if BOOST_VERSION >= 107400
27 #include <boost/serialization/library_version_type.hpp>
28 #endif
29 #include <boost/serialization/list.hpp>
30 #endif
31 
32 namespace gtsam {
33 
42 template<typename VALUE>
43 class FastList: public std::list<VALUE, typename internal::FastDefaultAllocator<VALUE>::type> {
44 
45 public:
46 
47  typedef std::list<VALUE, typename internal::FastDefaultAllocator<VALUE>::type> Base;
48 
50  FastList() {}
51 
53  template<typename INPUTITERATOR>
54  explicit FastList(INPUTITERATOR first, INPUTITERATOR last) : Base(first, last) {}
55 
57  FastList(const FastList<VALUE>& x) : Base(x) {}
58 
60  FastList(const Base& x) : Base(x) {}
61 
63  FastList(std::initializer_list<VALUE> l) : Base(l) {}
64 
65 #ifdef GTSAM_ALLOCATOR_BOOSTPOOL
66 
67  FastList(const std::list<VALUE>& x) {
68  // This if statement works around a bug in boost pool allocator and/or
69  // STL vector where if the size is zero, the pool allocator will allocate
70  // huge amounts of memory.
71  if(x.size() > 0)
72  Base::assign(x.begin(), x.end());
73  }
74 #endif
75 
77  operator std::list<VALUE>() const {
78  return std::list<VALUE>(this->begin(), this->end());
79  }
80 
81 private:
82 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
83 
84  friend class boost::serialization::access;
85  template<class ARCHIVE>
86  void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
87  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
88  }
89 #endif
90 
91 };
92 
93 }
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
FastList(std::initializer_list< VALUE > l)
Construct from c++11 initializer list:
Definition: FastList.h:63
FastList(const Base &x)
Definition: FastList.h:60
FastList(INPUTITERATOR first, INPUTITERATOR last)
Definition: FastList.h:54
Definition: FastList.h:43
Definition: chartTesting.h:28
FastList()
Definition: FastList.h:50
FastList(const FastList< VALUE > &x)
Definition: FastList.h:57
An easy way to control which allocator is used for Fast* collections.