Its really really difficult to change. It was a design choice I made
early in the Sparse<T>::assign and Sparse<T>::assign1 functions.
Basically in most cases when you'll add data to this manner to a sparse
matrix it will need to be enlarged. Even if it doesn't need to be
enlarged, there is a good chance that you might add the data in the
middle of the existing elements, so much movement of data would be
needed. So the assign functions just create a new sparse matrix, fill it
from the old and new matrices and be done with it.
Changing would require a complete rewrite of the assign function, and
also I feel won't make much sense unless you also relaxed the
requirement in a sparse column that the elements are sorted, which I
also made to simplify a lot of code.. I personally don't see a reason to
go to this effort when the workaround is fairly simple...