| 307 | } |
| 308 | |
| 309 | iterator erase(iterator it) { |
| 310 | size_t pnum = PageNumber(it.Offset); |
| 311 | size_t pidx = InPageIndex(it.Offset); |
| 312 | |
| 313 | if (CurrentPage().empty()) |
| 314 | TPages::pop_back(); |
| 315 | |
| 316 | for (size_t p = NPages() - 1; p > pnum; --p) { |
| 317 | PageAt(p - 1).push_back(PageAt(p).front()); |
| 318 | PageAt(p).erase(PageAt(p).begin()); |
| 319 | } |
| 320 | |
| 321 | PageAt(pnum).erase(PageAt(pnum).begin() + pidx); |
| 322 | return it; |
| 323 | } |
| 324 | |
| 325 | iterator erase(iterator b, iterator e) { |
| 326 | // todo : suboptimal! |