парадоксально простой алгоритм получается, если пытаться сохранить сортировку старых элементов.
X++:
ret = new List( Types::Container );
setIterOld = new SetIterator( _setOfValues2Replace );
setIterNew = new SetIterator( _setOfNewValues );
while (setIterNew.more() && setIterOld.more())
{
if (setIterOld.value() > setIterNew.value())
{
ret.addEnd( [ setIterOld.value(), setIterNew.value() ] );
}
else if (setIterOld.value() < setIterNew.value())
{
ret.addStart( [ setIterOld.value(), setIterNew.value() ] );
}
setIterNew.next();
setIterOld.next();
}
return ret;