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
							 | 
						||
| 
								 | 
							
								
							 |