42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
/**
 | 
						|
 * @file    VectorConfig.h
 | 
						|
 * @brief   Factor Graph Configuration
 | 
						|
 * @author Frank Dellaert
 | 
						|
 */
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
/*
 | 
						|
 * There are two interchangeable implementations of VectorConfig.
 | 
						|
 *
 | 
						|
 * VectorMap uses a straightforward stl::map of Vectors. It has O(log n)
 | 
						|
 * insert and access, and is fairly fast at both. However, it has high overhead
 | 
						|
 * for arithmetic operations such as +, scale, axpy etc...
 | 
						|
 *
 | 
						|
 * VectorBTree uses a functional BTree as a way to access SubVectors
 | 
						|
 * in an ordinary Vector. Inserting is O(n) and much slower, but accessing,
 | 
						|
 * is O(log n) and might be a bit slower than VectorMap. Arithmetic operations
 | 
						|
 * are blindingly fast, however. The cost is it is not as KISS as VectorMap.
 | 
						|
 *
 | 
						|
 * Access to vectors is now exclusively via operator[]
 | 
						|
 * Vector access in VectorMap is via a Vector reference
 | 
						|
 * Vector access in VectorBtree is via the SubVector type (see Vector.h)
 | 
						|
 *
 | 
						|
 * Feb 16 2010: FD: I made VectorMap the default, because I decided to try
 | 
						|
 * and speed up conjugate gradients by using Sparse FactorGraphs all the way.
 | 
						|
 */
 | 
						|
 | 
						|
// we use define and not typedefs as typdefs cannot be forward declared
 | 
						|
#ifdef VECTORBTREE
 | 
						|
 | 
						|
#include "VectorBTree.h"
 | 
						|
#define VectorConfig VectorBTree
 | 
						|
 | 
						|
#else
 | 
						|
 | 
						|
#include "VectorMap.h"
 | 
						|
#define VectorConfig VectorMap
 | 
						|
 | 
						|
#endif
 | 
						|
 |