C++ (Qt)void OffsetRange( QList<Week *> & lst, Iter beg, Iter end, int offset ){// calc sort range auto sortBeg = beg; auto sortEnd = end; if (offset > 0) { if (end != lst.end()) sortEnd = std::lower_bound(beg, lst.end(), (*end)->data().addDays(offset), CompDate1); } else { if (beg != lst.end()) sortBeg = std::lower_bound(lst.begin(), beg, (*beg)->data().addDays(offset), CompDate1); } // modify elements while (beg != end) { auto & dst= *beg; auto newP = new Week(dst->data().addDays(offset)); delete dst; dst = newP; ++beg; } // sort it std::sort(sortBeg, sortEnd, CompDate2);}