7 template <
class IT,
class NT>
16 virtual bool Next() = 0;
17 virtual bool NextTo(IT loc_idx) = 0;
22 virtual void Del() = 0;
24 virtual void Set(
const IT loc_idx,
const NT& val) = 0;
27 template <
class IT,
class NT>
39 return v.LengthUntil() + loc_idx;
45 v.Owner(gbl_idx, ret);
53 bool exists = ((unsigned)
iter_idx <
v.arr.size());
88 void Set(
const IT loc_idx,
const NT& val)
94 template <
class IT,
class NT>
104 if (
v.ind.size() == 0)
110 return v.LengthUntil() + loc_idx;
116 v.Owner(gbl_idx, ret);
123 bool exists = ((unsigned)
iter_idx <
v.ind.size());
131 typename vector<IT>::iterator iter = lower_bound(
v.ind.begin()+
iter_idx,
v.ind.end(), loc_idx);
132 if(iter ==
v.ind.end())
137 else if (loc_idx < *iter)
175 void Set(
const IT loc_idx,
const NT& val)
186 typename vector<IT>::iterator iter = lower_bound(
v.ind.begin(),
v.ind.end(), loc_idx);
187 if(iter ==
v.ind.end())
189 v.ind.push_back(loc_idx);
190 v.num.push_back(val);
192 else if (loc_idx < *iter)
196 v.num.insert(
v.num.begin() + (iter-
v.ind.begin()), val);
197 v.ind.insert(iter, loc_idx);
201 *(
v.num.begin() + (iter-
v.ind.begin())) = val;
205 void Append(
const IT loc_idx,
const NT& val)
207 v.ind.push_back(loc_idx);
208 v.num.push_back(val);