24#include <boost/serialization/nvp.hpp>
25#include <boost/shared_ptr.hpp>
73 typedef boost::shared_ptr<Factor> shared_ptr;
95 template<
typename CONTAINER>
96 explicit Factor(
const CONTAINER& keys) : keys_(keys.begin(), keys.end()) {}
100 template<
typename ITERATOR>
101 Factor(ITERATOR first, ITERATOR last) : keys_(first, last) {}
105 template<
typename CONTAINER>
107 return Factor(keys.begin(), keys.end()); }
111 template<
typename ITERATOR>
113 return Factor(first, last); }
128 bool empty()
const {
return keys_.empty(); }
157 size_t size()
const {
return keys_.size(); }
166 const std::string& s =
"Factor",
167 const KeyFormatter& formatter = DefaultKeyFormatter)
const;
170 virtual void printKeys(
171 const std::string& s =
"Factor",
172 const KeyFormatter& formatter = DefaultKeyFormatter)
const;
175 bool equals(
const This& other,
double tol = 1e-9)
const;
198 friend class boost::serialization::access;
199 template<
class Archive>
200 void serialize(Archive & ar,
const unsigned int ) {
201 ar & BOOST_SERIALIZATION_NVP(keys_);
Typedefs for easier changing of types.
A thin wrapper around std::vector that uses a custom allocator.
std::vector< T, typename internal::FastDefaultVectorAllocator< T >::type > FastVector
FastVector is a type alias to a std::vector with a custom memory allocator.
Definition FastVector.h:34
Global functions in a separate testing namespace.
Definition chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:86
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:156
FastVector< FactorIndex > FactorIndices
Define collection types:
Definition Factor.h:34
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:100
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
FastSet is a thin wrapper around std::set that uses the boost fast_pool_allocator instead of the defa...
Definition FastSet.h:50
Template to create a binary predicate.
Definition Testable.h:111
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:38
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition Factor.h:140
KeyVector keys_
The keys involved in this factor.
Definition Factor.h:85
const_iterator find(Key key) const
find
Definition Factor.h:137
const_iterator begin() const
Iterator at beginning of involved variable keys.
Definition Factor.h:143
Factor()
Default constructor for I/O.
Definition Factor.h:91
iterator end()
Iterator at end of involved variable keys.
Definition Factor.h:188
bool empty() const
Whether the factor is empty (involves zero variables).
Definition Factor.h:128
KeyVector & keys()
Definition Factor.h:182
static Factor FromIterators(ITERATOR first, ITERATOR last)
Construct factor from iterator keys.
Definition Factor.h:112
static Factor FromKeys(const CONTAINER &keys)
Construct factor from container of keys.
Definition Factor.h:106
iterator begin()
Iterator at beginning of involved variable keys.
Definition Factor.h:185
virtual ~Factor()=default
Default destructor.
Factor(ITERATOR first, ITERATOR last)
Construct factor from iterator keys.
Definition Factor.h:101
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition Factor.h:80
const_iterator end() const
Iterator at end of involved variable keys.
Definition Factor.h:146
Factor(const CONTAINER &keys)
Construct factor from container of keys.
Definition Factor.h:96
KeyVector::iterator iterator
Iterator over keys.
Definition Factor.h:77
Key back() const
Last key.
Definition Factor.h:134
Key front() const
First key.
Definition Factor.h:131
size_t size() const
Definition Factor.h:157