14 _citer(isReversed ? own._map.rbegin(key) : own._map.begin(key)),
15 _end(isReversed ? own._map.rend() : own._map.end()) {}
17 nbool isEnd()
const override {
return _citer == _end; }
19 void rel()
override { _citer = _end; }
26 ncnt
stepForward(ncnt step)
override {
return _step(
false, step); }
28 ncnt stepBackward(ncnt step)
override {
return _step(
true, step); }
30 const K* getKey()
const override {
31 WHEN(isEnd()) .ret(
nullptr);
32 return _citer.getKey();
37 V* getVal()
override {
38 WHEN(isEnd()) .ret(
nullptr);
39 return _citer.getVal() TO(get());
44 void setVal(
const V& new1)
override {
49 using super::getContainer;
51 tbicontainable<K, V>* getContainer()
override {
return &_own; }
54 nbool _onSame(
const typeProvidable& rhs)
const override {
55 const me& cast = (
const me&) rhs;
56 return this->isFrom(cast.getContainer()) && _citer == cast._citer;
60 ncnt _step(nbool isReversed, ncnt step) {
61 WHEN(isEnd()) .ret(0);
62 for(
int n = 0; n < step; n++) {
63 isReversed ? (this->isReversed() ? ++_citer : --_citer) : (this->isReversed() ? --_citer : ++_citer);
64 WHEN(isEnd()) .ret(n);