#include <CouenneSparseBndVec.hpp>
Public Member Functions | |
CouenneSparseBndVec (unsigned int size) | |
Constructor. More... | |
CouenneSparseBndVec (CouenneSparseBndVec &src) | |
Copy constructor. More... | |
~CouenneSparseBndVec () | |
Destructor. More... | |
void | reset () |
Reset (eeeeasy!) More... | |
T & | operator[] (register unsigned int index) |
Access – the only chance for garbage to be returned (and for valgrind to complain) is when object[ind] is READ without making sure it has been written. More... | |
T * | data () |
Return data in DENSE format – use with care. More... | |
unsigned int * | indices () |
Return indices in DENSE format – for use with data() More... | |
unsigned int | nElements () |
Return current size. More... | |
void | resize (unsigned int newsize) |
Resize. More... | |
Private Attributes | |
unsigned int | size_ |
Implements a fast sparse+dense vector data structure, with a size of n and a number k of nonzero elements. More... | |
unsigned int | n_ |
current number of elements More... | |
unsigned int * | dInd_ |
indices vector, dense (garbage exists past n_) More... | |
unsigned int * | sInd_ |
indices vector, sparse (lots of garbage in between entries) More... | |
T * | data_ |
data vector, sparse (lots of garbage in between entries) More... | |
Definition at line 16 of file CouenneSparseBndVec.hpp.
|
inline |
Constructor.
Definition at line 51 of file CouenneSparseBndVec.hpp.
|
inline |
Copy constructor.
assert: src.sInd [ind] == i
Definition at line 62 of file CouenneSparseBndVec.hpp.
|
inline |
Destructor.
Definition at line 76 of file CouenneSparseBndVec.hpp.
|
inline |
Reset (eeeeasy!)
Definition at line 83 of file CouenneSparseBndVec.hpp.
|
inline |
Access – the only chance for garbage to be returned (and for valgrind to complain) is when object[ind] is READ without making sure it has been written.
This should not happen to the end user as read operations are only performed on the dense structure, after this object has been populated.
Definition at line 91 of file CouenneSparseBndVec.hpp.
|
inline |
Return data in DENSE format – use with care.
Definition at line 103 of file CouenneSparseBndVec.hpp.
|
inline |
Return indices in DENSE format – for use with data()
Definition at line 107 of file CouenneSparseBndVec.hpp.
|
inline |
Return current size.
Definition at line 111 of file CouenneSparseBndVec.hpp.
|
inline |
Resize.
Definition at line 115 of file CouenneSparseBndVec.hpp.
|
private |
Implements a fast sparse+dense vector data structure, with a size of n and a number k of nonzero elements.
Usually, k<<n as happens in FBBT where k is the number of tightened variables and n is the number of variables. The main purpose is that of having a vector with
1) no O(n) initialization;
2) easy scan of the list of nonzero elements, i.e., O(k) rather than O(n).
Implemented based on the (simple but beautiful) idea found at
http://research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html
which in turn refers to a paper by Briggs and Torczon:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.7319
NOTE: This will make valgrind complain on every assignment to non-previously-assigned entries. Get over it. maximum size
Definition at line 42 of file CouenneSparseBndVec.hpp.
|
private |
current number of elements
Definition at line 43 of file CouenneSparseBndVec.hpp.
|
private |
indices vector, dense (garbage exists past n_)
Definition at line 44 of file CouenneSparseBndVec.hpp.
|
private |
indices vector, sparse (lots of garbage in between entries)
Definition at line 45 of file CouenneSparseBndVec.hpp.
|
private |
data vector, sparse (lots of garbage in between entries)
Definition at line 46 of file CouenneSparseBndVec.hpp.