why is min_element() used here?
The CubicSpline is initialized with the assumption that the data is sorted by mz already, correct?!
So here you can just use:
mzMin_ = mz.front();
mzMax_ = mz.back();

We might want to add a check for "sortedness" -- just to make sure.
That's quick (no big overhead), i.e.,
if (std::adjacent_find(mz.begin(), mz.end(), std::greater<double>()) != mz.end()
{
  throw Exception::...
}
and throw exception if its not sorted (and document it)
This can already be done in CubicSpline2d, so you can rely on it then computing mzMin_...
(just document in CubicSpline2d that SplinePackage relies on the check)

I think most of our parsers already ensure sortedness.. and if the data is not sorted, something is fishy anyways.