GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
DSFVector.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 
21 #include <gtsam/dllexport.h>
22 #include <gtsam/global_includes.h>
23 
24 #include <memory>
25 
26 #include <vector>
27 #include <set>
28 #include <map>
29 
30 namespace gtsam {
31 
38 class GTSAM_EXPORT DSFBase {
39 
40 public:
41  typedef std::vector<size_t> V;
42 
43 private:
44  std::shared_ptr<V> v_;
45 
46 public:
48  DSFBase(const size_t numNodes);
49 
51  DSFBase(const std::shared_ptr<V>& v_in);
52 
54  size_t find(size_t key) const;
55 
57  void merge(const size_t& i1, const size_t& i2);
58 };
59 
64 class GTSAM_EXPORT DSFVector: public DSFBase {
65 
66 private:
67  std::vector<size_t> keys_;
68 
69 public:
71  DSFVector(const size_t numNodes);
72 
74  DSFVector(const std::vector<size_t>& keys);
75 
77  DSFVector(const std::shared_ptr<V>& v_in, const std::vector<size_t>& keys);
78 
79  // All operations below loop over all keys and hence are *at least* O(n)
80 
82  bool isSingleton(const size_t& label) const;
83 
85  std::set<size_t> set(const size_t& label) const;
86 
88  std::map<size_t, std::set<size_t> > sets() const;
89 
91  std::map<size_t, std::vector<size_t> > arrays() const;
92 };
93 
94 }
Definition: DSFVector.h:64
Definition: DSFVector.h:38
std::vector< size_t > V
Vector of ints.
Definition: DSFVector.h:41
Included from all GTSAM files.
Definition: chartTesting.h:28