16 typedef std::map<int,T> Storage;
17 typedef typename Storage::iterator iterator;
18 typedef typename Storage::const_iterator const_iterator;
22 inline void resize(
size_t _n) { n=_n; assert(isValid()); }
23 inline void clear() { entries.clear(); n=0; }
24 inline bool empty()
const {
return n==0; }
25 inline size_t size()
const {
return n; }
26 inline size_t numEntries()
const {
return entries.size(); }
27 inline iterator begin() {
return entries.begin(); }
28 inline iterator end() {
return entries.end(); }
29 inline const_iterator begin()
const {
return entries.begin(); }
30 inline const_iterator end()
const {
return entries.end(); }
31 inline iterator insert(
int i,
const T& t) {
34 iterator res=entries.insert(p).first;
38 inline iterator push_back(
int i,
const T& t) {
41 iterator res=entries.insert(end(),p);
45 inline iterator find(
int i) {
return entries.find(i); }
46 inline const_iterator find(
int i)
const {
return entries.find(i); }
47 inline bool erase(
int i) {
return entries.erase(i)!=0; }
48 inline void erase(
const iterator& it) { entries.erase(it); }
49 inline bool isValidIndex(
int i)
const {
return i>=0&&i<(int)n; }
50 inline bool isValid()
const 52 for(const_iterator i=entries.begin();i!=entries.end();i++)
53 if(i->first < 0 || i->first >= (
int)n)
return false;
60 if(!
ReadFile(f,numEntries))
return false;
64 for(
size_t i=0;i<numEntries;i++) {
71 bool Write(
File& f)
const 74 size_t numEntries=entries.size();
75 if(!
WriteFile(f,numEntries))
return false;
76 for(iterator i=begin();i!=end();i++) {
A sparse 1D array class.
Definition: SparseArray.h:13
bool WriteFile(File &f, const std::vector< type > &v)
WriteFile() for STL vectors. See File.h.
Definition: ioutils.h:73
A unified interface for reading/writing binary data to file.
bool ReadFile(File &f, std::vector< type > &v)
ReadFile() for STL vectors. See File.h.
Definition: ioutils.h:61
A cross-platform class for reading/writing binary data.
Definition: File.h:47