24 #include <boost/serialization/nvp.hpp> 57 typedef boost::shared_ptr<Factor> shared_ptr;
79 template<
typename CONTAINER>
80 explicit Factor(
const CONTAINER& keys) : keys_(keys.begin(), keys.end()) {}
84 template<
typename ITERATOR>
85 Factor(ITERATOR first, ITERATOR last) : keys_(first, last) {}
89 template<
typename CONTAINER>
91 return Factor(keys.begin(), keys.end()); }
95 template<
typename ITERATOR>
97 return Factor(first, last); }
112 const_iterator
find(
Key key)
const {
return std::find(begin(), end(), key); }
118 const_iterator
begin()
const {
return keys_.begin(); }
121 const_iterator
end()
const {
return keys_.end(); }
126 size_t size()
const {
return keys_.size(); }
135 void print(
const std::string& s =
"Factor",
const KeyFormatter& formatter = DefaultKeyFormatter)
const;
138 void printKeys(
const std::string& s =
"Factor",
const KeyFormatter& formatter = DefaultKeyFormatter)
const;
142 bool equals(
const This& other,
double tol = 1e-9)
const;
154 iterator
begin() {
return keys_.begin(); }
157 iterator
end() {
return keys_.end(); }
161 friend class boost::serialization::access;
162 template<
class Archive>
163 void serialize(Archive & ar,
const unsigned int ) {
164 ar & BOOST_SERIALIZATION_NVP(keys_);
iterator end()
Iterator at end of involved variable keys.
Definition: Factor.h:157
This is the base class for all factor types.
Definition: Factor.h:51
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:140
Typedefs for easier changing of types.
static Factor FromKeys(const CONTAINER &keys)
Construct factor from container of keys.
Definition: Factor.h:90
Factor(const CONTAINER &keys)
Construct factor from container of keys.
Definition: Factor.h:80
const_iterator find(Key key) const
find
Definition: Factor.h:112
const_iterator end() const
Iterator at end of involved variable keys.
Definition: Factor.h:121
size_t size() const
Definition: Factor.h:126
Definition: FastVector.h:36
const_iterator begin() const
Iterator at beginning of involved variable keys.
Definition: Factor.h:118
Template to create a binary predicate.
Definition: Testable.h:110
FastVector< Key > keys_
The keys involved in this factor.
Definition: Factor.h:69
FastVector< Key >::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:64
Key back() const
Last key.
Definition: Factor.h:109
const FastVector< Key > & keys() const
Access the factor's involved variable keys.
Definition: Factor.h:115
Key front() const
First key.
Definition: Factor.h:106
static Factor FromIterators(ITERATOR first, ITERATOR last)
Construct factor from iterator keys.
Definition: Factor.h:96
FastVector< Key >::iterator iterator
Iterator over keys.
Definition: Factor.h:61
Factor()
Default constructor for I/O.
Definition: Factor.h:75
A thin wrapper around std::vector that uses boost's pool_allocator.
iterator begin()
Iterator at beginning of involved variable keys.
Definition: Factor.h:154
Factor(ITERATOR first, ITERATOR last)
Construct factor from iterator keys.
Definition: Factor.h:85
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:57
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:33
FastVector< Key > & keys()
Definition: Factor.h:151