VecIncAccess< _Data > Class Template Reference

#include <vecincaccess.h>

Inheritance diagram for VecIncAccess< _Data >:
Inheritance graph
[legend]
Collaboration diagram for VecIncAccess< _Data >:
Collaboration graph
[legend]

List of all members.

Classes

class  cyclic_iterator
class  iterator
class  Node

Public Types

typedef std::vector< Node >
::const_iterator 
data_iterator

Public Member Functions

 VecIncAccess ()
void push_back (Index index, const _Data &data)
iterator begin ()
cyclic_iterator begin_cyclic ()
data_iterator begin_data ()
data_iterator end_data ()
void reserve (unsigned size)
Index size ()

Protected Attributes

std::vector< Nodem_list

Friends

std::ostream & operator<< (std::ostream &out, const VecIncAccess< _Data > &v)

Detailed Description

template<class _Data>
class VecIncAccess< _Data >

IncAccessVector define a sparse vector optimized for finding non null elements as long as the sequence of searchs for indices is always increasing.

Definition at line 22 of file vecincaccess.h.


Member Typedef Documentation

template<class _Data>
typedef std::vector<Node>::const_iterator VecIncAccess< _Data >::data_iterator

Reimplemented in VecIncBC.

Definition at line 38 of file vecincaccess.h.


Constructor & Destructor Documentation

template<class _Data>
VecIncAccess< _Data >::VecIncAccess (  )  [inline]

Definition at line 170 of file vecincaccess.h.

00170                 {
00171     Node node;
00172     node.index=INDEX_MAX;
00173     m_list.push_back(node);
00174   }


Member Function Documentation

template<class _Data>
iterator VecIncAccess< _Data >::begin (  )  [inline]

Definition at line 184 of file vecincaccess.h.

00184 {return iterator(this,m_list.begin());}

template<class _Data>
cyclic_iterator VecIncAccess< _Data >::begin_cyclic (  )  [inline]

Definition at line 186 of file vecincaccess.h.

00186 {return cyclic_iterator(this,m_list.begin());}

template<class _Data>
data_iterator VecIncAccess< _Data >::begin_data (  )  [inline]

Definition at line 188 of file vecincaccess.h.

00188 {return m_list.begin();}

template<class _Data>
data_iterator VecIncAccess< _Data >::end_data (  )  [inline]

Definition at line 189 of file vecincaccess.h.

00189                           {assert(m_list.size() != 0);
00190                            return m_list.begin() + (m_list.size() -1);}

template<class _Data>
void VecIncAccess< _Data >::push_back ( Index  index,
const _Data &  data 
) [inline]

Definition at line 176 of file vecincaccess.h.

00177   {
00178     Node node;
00179     node.index=index;
00180     node.data = data;
00181     m_list.push_back(node);
00182     std::swap(m_list.back(),m_list[m_list.size()-2]);
00183   }

template<class _Data>
void VecIncAccess< _Data >::reserve ( unsigned  size  )  [inline]

Definition at line 192 of file vecincaccess.h.

00193   {
00194     m_list.reserve(size+2);
00195   }

template<class _Data>
Index VecIncAccess< _Data >::size (  )  [inline]

Definition at line 197 of file vecincaccess.h.

00197 {return m_list.size()-1;}


Friends And Related Function Documentation

template<class _Data>
std::ostream& operator<< ( std::ostream &  out,
const VecIncAccess< _Data > &  v 
) [friend]

Definition at line 203 of file vecincaccess.h.

00204 {
00205   typename std::vector< typename VecIncAccess<_Data>::Node >::const_iterator it=v.m_list.begin();
00206   while(it!=v.m_list.end())
00207   {
00208     out << it->index << " " << it->data << "\n";
00209   }
00210 
00211 
00212   return out;
00213 }


Member Data Documentation

template<class _Data>
std::vector<Node> VecIncAccess< _Data >::m_list [protected]

Definition at line 33 of file vecincaccess.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Sun Apr 8 23:13:33 2012 for CO2INJECTION by  doxygen 1.6.3